Поделиться через


Настройка приложения Azure для доступа к SharePoint

Для использования сущности "Документы SharePoint " в организации Dynamics 365 за пределами сетки документов в приложении Dynamics 365 Customer Engagement (on-premises) требуется приложение Azure для предоставления доступа. Примером такого доступа является использование в вызовах API Dynamics 365 Customer Engagement. Настройка использует управляемые удостоверения Power Platform с Azure для предоставления доступа.

Это важно

Начиная с марта 2025 г. текущий доступ будет удален для усиления защиты системы. Чтобы обеспечить непрерывный доступ, выполните следующие действия, чтобы создать приложение Azure с необходимыми разрешениями SharePoint, настроить управляемые удостоверения в организации Dynamics 365 Customer Engagement (on-premises) и настроить федеративные учетные данные.

Создание приложения Azure с разрешениями SharePoint

Создайте регистрацию приложения с разрешением на использование API для SharePoint. Узнайте больше о регистрации приложения и доступе к SharePoint в разделах Краткое руководство по регистрации приложения Azure и Доступ к SharePoint только через приложение Azure AD.

  1. Откройте портал Azure.

  2. В разделе Службы Azure выберите Регистрация приложений.

  3. Выберите Новая регистрация.

  4. Введите имя приложения.

  5. В разделе Поддерживаемые типы учетных записей выберите Учетные записи только в этом каталоге организации.

    Замечание

    Другие типы учетных записей в настоящее время не поддерживаются.

  6. Выберите Регистрация, чтобы создать регистрацию приложения.

  7. Обратите внимание на идентификатор приложения (клиента) и идентификатор каталога (арендатора).

    1. В списке навигации выберите Обзор.
    2. В разделе Основные скопируйте значения Идентификатора приложения (клиента) и Идентификатора каталога (клиента) для использования в следующем разделе.
  8. В списке навигации выберите Управление>Разрешения API.

  9. В разделе Настроенные разрешения выберите Добавить разрешение, чтобы открыть панель Запросить разрешения API.

    1. Выберите SharePoint.
    2. В разделе Какой тип разрешений требуется вашему приложению? выберите Разрешения приложения.
    3. В разделе Выбор разрешений выберите Sites.FullControl.All.
    4. Выберите Добавить разрешения, чтобы создать разрешение SharePoint.
    5. Выберите Предоставить согласие администратора для домена <tenant name>.

Предварительные требования к настройке сервера

  1. Скачайте пакет NuGet для сборки "Microsoft.Identity.Client" версии 4.11.0.

    1. Открыть https://www.nuget.org/packages/Microsoft.Identity.Client/4.11.0#readme-body-tab
    2. В разделе О программе выберите Скачать пакет
  2. Переименуйте загруженный пакет из "microsoft.identity.client.4.11.0.nupkg" в microsoft.identity.client.4.11.0.zip.

  3. Запустите извлечение из microsoft.identity.client.4.11.0.zip.

  4. В извлеченном каталоге откройте папку lib/net45 и найдите файлы «Microsoft.Identify.Client.dll» и «Microsoft.Identify.Client.xml», которые можно использовать на следующем шаге.

  5. На сервере Windows Server, где выполняется роль сервера веб-приложений Dynamics 365 Customer Engagement (on-premises), откройте Internet Information Services Manager.

    1. Откройте команду «Выполнить » в меню «Пуск » на панели задач Windows.
    2. Введите inetmgr и нажмите клавишу Enter.
  6. Разверните раздел Сайты на панели Подключения .

  7. Щелкните правой кнопкой мыши сайт Microsoft Dynamics CRM , выберите Обзор, а затем откройте папку CRMWeb .

  8. Откройте папку корзины .

  9. Скопируйте два файла «Microsoft.Identity.Client.dll» и «Microsoft.Identity.Client.xml» из извлеченного каталога пакета NuGet, а затем вставьте оба в папку bin .

Создание записи приложения Azure в таблице PartnerApplicationBase в базе данных организации Dynamics 365 Customer Engagement

  1. Откройте SQL Server Management Studio и скопируйте этот SQL-скрипт.
IF (SELECT COUNT(*)
FROM OrganizationBase WITH (NOLOCK)) <> 1
	THROW 51000, 'Organization records does not equal 1', 1
 
DECLARE @organizationId UNIQUEIDENTIFIER  = (SELECT OrganizationId
FROM OrganizationBase WITH (NOLOCK));
DECLARE @utcNow DATETIME = GetUtcDate();
DECLARE @principalId UNIQUEIDENTIFIER = '00000003-0000-0ff1-ce00-000000000000';
DECLARE @applicationName NVARCHAR(100) = 'Microsoft SharePoint Online';
DECLARE @byoaAppId UNIQUEIDENTIFIER = '<appId>';
--Customer need to provide the app id.
DECLARE @tenantId UNIQUEIDENTIFIER = '<tenantId';
 
BEGIN TRANSACTION InsertRows
 
INSERT INTO [dbo].[PartnerApplicationBase]
	([PrincipalId]
	,[StateCode]
	,[Name]
	,[UseAuthorizationServer]
	,[PartnerApplicationId]
	,[StatusCode]
	,[ApplicationRole]
	,[OrganizationId]
	,[CreatedOn]
	,[ModifiedOn]
	,[TenantId])
VALUES
	(@principalId
	, 0
	, @applicationName
	, 1
	, @byoaAppId
	, 1
	, 1
	, @organizationId
	, @utcNow
	, @utcNow
	, @tenantId)
 
COMMIT TRANSACTION InsertRows
  1. В скрипте обновите переменные @byoaAppId и @tenantId значениями идентификатора приложения и идентификатора клиента , которые вы скопировали ранее с портала Microsoft Azure в разделе Создание приложения Azure с разрешениями SharePoint этой статьи.

  2. Проверьте базу данных, а затем выполните скрипт.

  3. Подтвердите, выполнив запрос SELECT * FROM [PartnerApplicationBase]select и проверив поля PartnerApplicationId и TenantId .

Отправка сертификата в сертификаты приложений Azure

Получите существующий сертификат Dynamics 365 Customer Engagement (on-premises) с помощью этого скрипта.

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 
    } 
} 

Отправка существующего сертификата в сертификаты приложений Azure

  1. Откройте веб-браузер и перейдите на портал Azure для приложения Azure AD, созданного в первом разделе.

  2. Разверните Управление, а затем выберите Сертификаты и секреты.

  3. Загрузите созданный файл сертификата.

    1. В разделе Сертификаты выберите Отправить сертификат.

    2. Используйте команду Отправить сертификат, чтобы выбрать файл сертификата, созданный с помощью скрипта PowerShell.

    3. Добавьте описание и нажмите кнопку Добавить.

Вновь созданный сертификат отображается в списке Сертификаты .