Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O uso da entidade Documentos do SharePoint em uma organização do Dynamics 365 fora da grade de documentos em um aplicativo do Dynamics 365 Customer Engagement (on-premises) requer um aplicativo do Azure para conceder acesso. Um exemplo desse acesso inclui o uso em chamadas de API Dynamics 365 Customer Engagement. A instalação usa as identidades gerenciadas do Power Platform com o Azure para conceder acesso.
Importante
A partir de março de 2025, o acesso atual é removido para melhorar a proteção do sistema. Para garantir acesso contínuo, siga essas etapas para criar um aplicativo do Azure com as permissões do SharePoint necessárias, configurar identidades gerenciadas na organização do Dynamics 365 Customer Engagement (on-premises) e credenciais federadas.
Criar um aplicativo do Azure com permissões do SharePoint
Crie um registro de aplicativo com permissão de API para SharePoint. Saiba mais sobre como registrar um aplicativo e o acesso ao SharePoint no Aplicativo Azure Quickstart Register e SharePoint por meio do Azure AD App-Only.
Abra o portal do Azure.
Em Serviços do Azure, selecione Registros de aplicativo.
Selecione Novo registro.
Insira um Nome para o aplicativo.
Em Tipos de conta compatíveis, selecione Contas somente com o diretório organizacional.
Observação
Outros tipos de conta não são suportados no momento.
Selecione Registrar para criar o Registro do aplicativo.
Anote a ID do aplicativo (cliente) e a ID do diretório (locatário).
- Na lista de navegação, selecione Visão geral.
- Em Essentials, copie os valores ID do Aplicativo (cliente) e e ID do Diretório (locatário) a serem usados na próxima seção.
Na lista de navegação, selecione Gerenciar>Permissões de API.
Em Permissões configuradas, selecione Adicionar uma permissão para abrir o painel Solicitar permissões de API.
- Selecione SharePoint.
- Em Qual tipo de permissões o aplicativo requer?, selecione Permissões de aplicativo.
- Em Selecionar permissões, selecione Sites.FullControl.All.
- Selecione Adicionar permissões para criar a permissão do SharePoint.
- Selecione Conceder consentimento do administrador para
<tenant name>.
Pré-requisitos de configuração do servidor
Aplicar atualização do Service Update 1.36 para Microsoft Dynamics CRM (local) 9.1 – Suporte da Microsoft
Baixe o pacote do NuGet para o conjunto "Microsoft.Identity.Client" versão 4.11.0.
- Abrir https://www.nuget.org/packages/Microsoft.Identity.Client/4.11.0#readme-body-tab
- Em Sobre, selecione Baixar pacote
Renomeie o pacote baixado de "microsoft.identity.client.4.11.0.nupkg" para microsoft.identity.client.4.11.0.zip.
Execute a extração em microsoft.identity.client.4.11.0.zip.
Dentro do diretório extraído, abra a pasta lib/net45 e encontre os arquivos "Microsoft.Identify.Client.dll" e "Microsoft.Identify.Client.xml" a serem usados em uma etapa posterior.
No Windows Server em que a função de servidor do aplicativo Web do Dynamics 365 Customer Engagement (on-premises) estiver em execução, abra o Gerenciador dos Serviços de Informações da Internet.
- Abra o prompt Executar no menu Iniciar da barra de tarefas do Windows.
- Digite inetmgr e pressione Enter.
Expanda a seção Sites no painel Conexões.
Clique com o botão direito do mouse no site do Microsoft Dynamics CRM, selecione Explorar e abra a pasta CRMWeb.
Abra a pasta bin.
Copie os dois arquivos "Microsoft.Identity.Client.dll" e "Microsoft.Identity.Client.xml" do diretório do pacote NuGet extraído e, em seguida, cole ambos na pasta bin.
Criar registro de aplicativo Azure na tabela PartnerApplicationBase no banco de dados da organização Dynamics 365 Customer Engagement
- Abra o SQL Server Management Studio e copie nesse script SQL.
-- Set transaction isolation level to READ UNCOMMITTED.
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
--Customer need to provide the AAD app id that is to be used for authentication to SharePoint online.
DECLARE @byoaAppId NVARCHAR(36) = '<appId>';
--Customer need to provide the tenant id for SharePoint online.
DECLARE @tenantId NVARCHAR(36) = '<tenantId>';
-- Validate required parameters
IF ((@byoaAppId IS NULL OR TRY_CONVERT(UNIQUEIDENTIFIER, @byoaAppId) IS NULL)
OR (@tenantId IS NULL OR TRY_CONVERT(UNIQUEIDENTIFIER, @tenantId) IS NULL))
THROW 51001, 'Both Customer AAD App ID and Tenant ID must be provided and valid UNIQUEIDENTIFIERs.', 1;
SET @byoaAppId = CONVERT(UNIQUEIDENTIFIER, @byoaAppId);
SET @tenantId = CONVERT(UNIQUEIDENTIFIER, @tenantId);
IF (SELECT COUNT(*)
FROM OrganizationBase) <> 1
THROW 51000, 'Organization records does not equal 1', 1
DECLARE @organizationId UNIQUEIDENTIFIER = (SELECT OrganizationId
FROM OrganizationBase);
DECLARE @utcNow DATETIME = GetUtcDate();
DECLARE @sharePointOnlinePrincipalId UNIQUEIDENTIFIER = '00000003-0000-0ff1-ce00-000000000000';
DECLARE @sharePointOnlineAppId UNIQUEIDENTIFIER = '38616d01-8e81-42dd-82fb-b68f2cecac3a';
DECLARE @applicationName NVARCHAR(100) = 'Microsoft SharePoint Online';
BEGIN TRY
BEGIN TRANSACTION InsertRows;
-- Handle Microsoft-provided SharePoint Online app
-- Check current state of Microsoft SharePoint Online record
DECLARE @microsoftAppExists BIT = 0;
DECLARE @microsoftAppNeedsUpdate BIT = 0;
SELECT @microsoftAppExists = 1,
@microsoftAppNeedsUpdate = CASE
WHEN TenantId IS NULL OR TenantId <> @tenantId THEN 1
ELSE 0
END
FROM PartnerApplicationBase
WHERE PrincipalId = @sharePointOnlinePrincipalId
AND OrganizationId = @organizationId
AND Name = @applicationName
AND PartnerApplicationId = @sharePointOnlineAppId;
IF @microsoftAppExists = 1 AND @microsoftAppNeedsUpdate = 1
BEGIN
-- Update existing Microsoft record with correct TenantId
UPDATE PartnerApplicationBase
SET TenantId = @tenantId,
ModifiedOn = @utcNow
WHERE PrincipalId = @sharePointOnlinePrincipalId
AND OrganizationId = @organizationId
AND Name = @applicationName
AND PartnerApplicationId = @sharePointOnlineAppId;
END
ELSE IF @microsoftAppExists = 1
BEGIN
SELECT 'Partner Application record already exists and is correct for Microsoft SharePoint Online with app ID ' + CAST(@sharePointOnlineAppId AS NVARCHAR(36)) AS Message;
END
ELSE
BEGIN
-- Insert new Microsoft record
INSERT INTO [dbo].[PartnerApplicationBase]
([PrincipalId], [StateCode], [Name], [UseAuthorizationServer], [PartnerApplicationId],
[StatusCode], [ApplicationRole], [Organizationid], [CreatedOn], [ModifiedOn], [TenantId])
VALUES
(@sharePointOnlinePrincipalId, 0, @applicationName, 1, @sharePointOnlineAppId,
1, 1, @organizationId, @utcNow, @utcNow, @tenantId);
END
-- Handle customer-provided AAD app
IF NOT EXISTS (
SELECT 1
FROM PartnerApplicationBase
WHERE PrincipalId = @sharePointOnlinePrincipalId
AND OrganizationId = @organizationId
AND Name = @applicationName
AND PartnerApplicationId = @byoaAppId)
BEGIN
-- Insert customer AAD app record
INSERT INTO [dbo].[PartnerApplicationBase]
([PrincipalId], [StateCode], [Name], [UseAuthorizationServer], [PartnerApplicationId],
[StatusCode], [ApplicationRole], [Organizationid], [CreatedOn], [ModifiedOn], [TenantId])
VALUES
(@sharePointOnlinePrincipalId, 0, @applicationName, 1, @byoaAppId,
1, 1, @organizationId, @utcNow, @utcNow, @tenantId);
END
ELSE
BEGIN
SELECT 'Partner Application record already exists for Microsoft SharePoint Online with app ID ' + CAST(@byoaAppId AS NVARCHAR(36)) AS Message;
END
COMMIT TRANSACTION InsertRows;
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION InsertRows;
-- Log error details for script-level errors
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState,
ERROR_LINE() AS ErrorLine;
END CATCH
No script, atualize as variáveis @byoaAppId e @tenantId com os valores ID do Aplicativo e ID do Locatário copiados anteriormente por você do portal do Microsoft Azure na seção Criar um aplicativo do Azure com permissões do SharePoint deste artigo.
Verifique o banco de dados e, em seguida, execute o script.
Confirme executando a consulta select
SELECT * FROM [PartnerApplicationBase]e verificando os campos PartnerApplicationId e TenantId.
Adicione o certificado entre servidores ao armazenamento de certificado local e base de dados de configuração do Customer Engagement (on-premises)
Abra uma sessão de comando do PowerShell em todos os servidores em que a função Servidor Completo do Dynamics 365 Server está instalada.
Importante
Se você tiver uma implantação de função de servidor, deverá executar o comando descrito aqui em todos os servidores do Dynamics 365 em que a função servidor de aplicativo Web está em execução.
Altere seu local para a pasta <unidade>:\Arquivos de Programa\Microsoft Dynamics CRM\Tools.
Execute o script CertificateReconfiguration.ps1 do Windows PowerShell conforme explicado aqui:
certificateFilecaminho\Personalcertfile.pfx . Parâmetro necessário que especifica o caminho completo do arquivo de troca de informações pessoais (.pfx). Mais informações: Como trabalhar com certificados digitais
passwordpersonal_certfile_password. Parâmetro exigido que especifica a senha do certificado privado.
certificateType S2STokenIssuer. Parâmetro exigido que especifica o tipo de certificado. Para integração baseada em servidor do Customer Engagement (on-premises) e da integração com base no servidor do SharePoint, somente o S2STokenIssuer é suportado.
serviceAccount 'DomainName\UserName' ou 'Serviço de Rede'. Parâmetro necessário que especifica a identidade para a função servidor de aplicativo Web. A identidade é uma conta de usuário de domínio, como contoso\CRMWebAppServer ou Serviço de Rede. A identidade receberá permissão para o certificado.
updateCrm. Adicione as informações de certificado ao banco de dados da configuração do Microsoft Customer Engagement (on-premises).
Importante
Mesmo que você tenha várias funções de Servidor de Aplicativos Web ou de Serviço Assíncrono implantadas, você só precisará executar o comando com o
updateCrmparâmetro uma vez.- storeFindType FindBySubjectDistinguishedName. Especifica o tipo do repositório de certificados. Por padrão, esse valor é
FindBySubjectDistinguishedNamee é recomendado quando você executa o script.
Importante
Embora os parâmetros
updateCrmeStoreFindTypesejam opcionais para executar o comando, eles são necessários para a integração baseada em servidor do SharePoint, para que as informações de certificados sejam adicionadas ao banco de dados de certificação.Exemplo:
.\CertificateReconfiguration.ps1 -certificateFile c:\Personalcertfile.pfx -password personal_certfile_password -updateCrm -certificateType S2STokenIssuer -serviceAccount Domain\UserName -storeFindType FindBySubjectDistinguishedName
Carregar certificado em certificados de aplicativo Azure
Busque o certificado Dynamics 365 Customer Engagement (on-premises) existente usando esse script.
cd $PSScriptRoot
$OutputFilePath = $PSScriptRoot + "\certificates\existing_crmsharepoints2s.cer"
$RemoveSnapInWhenDone = $False
if (-not (Get-PSSnapin -Name Microsoft.Crm.PowerShell -ErrorAction SilentlyContinue)) {
Add-PSSnapin Microsoft.Crm.PowerShell
$RemoveSnapInWhenDone = $True
}
try {
# Ensure the directory exists
$directory = [System.IO.Path]::GetDirectoryName($OutputFilePath)
if (-not (Test-Path -Path $directory)) {
New-Item -ItemType Directory -Path $directory | Out-Null
}
# Fetch existing certificate using Get-CrmCertificate and filter by CertificateType
$existingCert = Get-CrmCertificate | Where-Object { $_.CertificateType -eq "S2STokenIssuer" }
if ($null -eq $existingCert) {
Write-Error "No certificate found with CertificateType 'S2STokenIssuer'."
return
}
# Store the certificate in the specified path
$certBytes = [Convert]::FromBase64String($existingCert.Data)
[System.IO.File]::WriteAllBytes($OutputFilePath, $certBytes)
Write-Output "Certificate saved to $OutputFilePath"
}
catch {
Write-Error "An error occurred: $_"
}
finally {
if ($RemoveSnapInWhenDone) {
Remove-PSSnapin Microsoft.Crm.PowerShell
}
}
Se o script do PowerShell retornar "Nenhum certificado encontrado com CertificateType 'S2STokenIssuer'.", então
Localizar o servidor CRM com a função de ferramentas de implantação
Fazer logon usando um administrador de implantação do CRM
Substitua @crmCertFile pelo arquivo de certificado de caminho completo e execute o script do PowerShell como administrador
add-pssnapin microsoft.crm.powershell $CrmCertificate = "@crmCertFile" Params = @{ CertificateType = S2STokenIssuer StoreName = My StoreLocation = LocalMachine StoreFindType = FindBySubjectDistinguishedName DataFile = $CrmCertificate } Set-CrmCertificate @Params
Carregue o certificado existente nos certificados de aplicativo Azure
Abra um navegador da Web e vá até o portal do Azure do aplicativo do Azure AD criado na primeira seção.
Expanda Gerenciar e selecione Certificados e Segredos.
Carregue um arquivo de certificado criado.
Na seção Certificados, selecione Carregar certificado.
Use Carregar um certificado para selecionar o arquivo de certificado que foi criado a partir do script do PowerShell.
Adicione a Descrição e selecione Adicionar.
O certificado recém-criado é mostrado na lista Certificados.