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


Создание безопасного партнерского приложения

Вы можете реализовать платформу модели безопасных приложений, создав приложение для поставщик облачных решений (ПОСТАВЩИКОВ) или поставщиков панель управления (CPV).

Реализация модели безопасного приложения

Действия по включению безопасной модели приложений

Внимание

Azure Active Directory (Azure AD) Graph не рекомендуется использовать с 30 июня 2023 г. Идти вперед, мы не делаем дальнейших инвестиций в Azure AD Graph. API Azure AD Graph не имеют соглашения об уровне обслуживания или обслуживании за пределами исправлений, связанных с безопасностью. Инвестиции в новые функции и функциональные возможности будут сделаны только в Microsoft Graph.

Мы отставим Azure AD Graph на добавочных шагах, чтобы у вас было достаточно времени для переноса приложений в API Microsoft Graph. На более позднюю дату, которую мы объявим, мы заблокируем создание новых приложений с помощью Azure AD Graph.

Дополнительные сведения см. в статье "Важно: выход на пенсию в Azure AD Graph и отключение модуля PowerShell".

Создание субъекта-службы Центра партнеров

Сначала создайте субъект-службу Центра партнеров Майкрософт в клиенте партнера CSP, где будет создано мультитенантное приложение.

Для клиентов партнеров CSP этот субъект-служба уже должен существовать. Если нет, создайте следующие действия.

В окне Администратора PowerShell выполните следующие команды.

  1. Установите модуль Azure AD. Install-Module Microsoft.Graph
  2. Запустите Подключение-MgGraph, чтобы укажите имя пользователя и пароль. Введите учетные данные администратора клиента. Connect-MgGraph
  3. Создайте субъект-службу Центра партнеров Майкрософт. New-MgServicePrincipal -DisplayName "Microsoft Partner Center" -AppId fa3d9a0c-3fb0-42cc-9193-47c7ecd2edbd

Создание мультитенантного приложения в клиенте партнера CSP

Выполните следующие действия, чтобы убедиться, что для созданного мультитенантного приложения заданы следующие свойства приложения.

  1. Вход в portal.azure.com
  2. Выберите идентификатор Microsoft Entra и Регистрация приложений, чтобы создать новые регистрации с помощью мультитенантной версии.

Снимок экрана: регистрация модального приложения.

  1. Выберите отображаемое имя пользователя для приложения.
  2. Выберите поддерживаемый тип учетной записи: учетные записи в любом каталоге организации (любой каталог Microsoft Entra — Multitenant).
  3. Выберите тип платформы "Интернет".
  4. URL-адрес перенаправления должен быть URL-адрес перенаправления приложения, который отобразит сообщение об успешном выполнении согласия партнеру и собирает маркер обновления. Убедитесь, что URL-адрес перенаправления приложения установлен в конечную точку, в которой выполняется динамическое веб-приложение. Это приложение должно принять код авторизации из вызова входа Microsoft Entra.
  5. Перейдите на вкладку "Управление>сертификатами и секретами>" и "Новый секрет клиента" на вкладке "Секреты клиента".

Примечание.

Вам потребуется следующая информация из параметров веб-приложения в идентификаторе Microsoft Entra:

  • Application ID
  • Секрет приложения

Снимок экрана: сертификаты и секреты.

Применение разрешений

Убедитесь, что для мультитенантного приложения заданы следующие разрешения.

В разделе разрешений API:

  • В мультитенантном приложении не должно быть прямых разрешений приложения.

  • Выполните приведенный ниже путь для добавления делегированных разрешений для Microsoft Graph:

    • Разрешения>API: добавление разрешений>microsoft API>Microsoft Graph>Делегированные разрешения
      • DelegatedAdminRelationship.ReadWrite.All User.Read.All

    Снимок экрана: разрешения API запроса партнерского приложения.

    • Чтобы добавить делегированные разрешения для Центра партнеров Майкрософт, следуйте приведенному ниже пути. Предоставьте разрешения Центра партнеров Access в разделе Делегированные разрешения:
      • Разрешения>API: добавление API-интерфейсов разрешений>в моей организации использует>делегированное>олицетворение пользователей в Центре>партнеров Майкрософт

    Снимок экрана: разрешения I партнерского приложения A P.

Предоставьте партнеру ссылку согласия и войдите в систему с учетной записью службы, чтобы утвердить приложение от имени учетной записи службы в клиенте партнера.

Пользователь партнера CSP должен быть глобальным Администратор и агентом Администратор, чтобы предоставить мультитенантное приложение.

Мультитенантное приложение

Мультитенант ApplicationID должен быть заменен идентификатором приложения.

Перейдите к регистрации приложений и выберите идентификатор приложения (клиента) и замените его ниже.

Снимок экрана: клиент Microsoft Entra partner.

Получение кода авторизации

Код авторизации для веб-приложения необходимо получить из вызова входа Microsoft Entra:

  1. Войдите в идентификатор Microsoft Entra.
  2. Замените идентификатор приложения идентификатором приложения Microsoft Entra (GUID).
  3. При появлении запроса войдите с помощью учетной записи пользователя с помощью MFA.
  4. При появлении запроса введите другие сведения MFA (номер телефона или адрес электронной почты), чтобы проверить вход.
  5. После входа браузер перенаправит вызов в конечную точку веб-приложения с кодом авторизации. Например, в следующем примере кода перенаправление выполняется на адрес https://localhost:44395/.
GET https://login.microsoftonline.com/common/oauth2/authorize?&client_id=<CSPApplicationId>&response_type=code&redirect_url=https://<CSPApplicationUrl_which_collects_refreshtoken>

or

GET https://login.microsoftonline.com/common/oauth2/authorize?&client_id=<CSPApplicationId>&response_type=code

Для Китая используйте следующую ссылку:

GET https://login.chinacloudapi.cn/common/oauth2/authorize ?&client_id= <CSPApplicationId>&response_type=code&redirect_url= https://<CSPApplicationUrl_which_collects_refreshtoken>

or

GET https://login.chinacloudapi.cn/common/oauth2/authorize?&client_id= <CSPApplicationId>&response_type=code

Трассировка вызова кода авторизации: https://localhost:44395/?code=<authorization_code>&<rest of properties for state>

Получение маркера обновления

Теперь вам нужно получить маркер обновления с помощью кода авторизации.

  1. Вызов POST к конечной точке https://login.microsoftonline.com/CSPTenantID/oauth2/token входа Microsoft Entra с кодом авторизации. Пример такого вызова можно изучить здесь.
  2. Зафиксируйте полученный в ответе маркер обновления.
  3. Сохраните маркер обновления в Azure Key Vault. Дополнительные сведения см. в документации по API Key Vault.

Примечание.

Ресурсы, упоминание в приведенном ниже примере вызова POST, предназначены для API GDAP-Graph.

Ресурсы для других API ПК приведены следующим образом:

API Центра партнеров (https://api.partnercenter.microsoft.com)

API GDAP

API партнеров (https://api.partner.microsoft.com)

Пример вызова

POST  'https://login.microsoftonline.com/<partnerTenantId>/oauth2/token' \
--header 'content-type: application/x-www-form-urlencoded' \
--form 'grant_type="authorization_code"' \
--form 'client_id=<application_id or client_id>' \
--form 'resource="https://graph.microsoft.com"' \
--form 'code="<authorization_code>"'   
Response Body:

{
    "token_type": "Bearer",
    "scope": "DelegatedAdminRelationship.ReadWrite.All User.Read.All",
    "expires_in": "4549",
    "ext_expires_in": "4549",
    "expires_on": "1652886571",
    "not_before": "1652881721",
    "resource": "https://graph.microsoft.com",
    "access_token": "Access_token",
    "refresh_token": "Refresh_token",    
    "id_token": "Id_token"
}

Настройка хранилища ключей

Сначала создайте веб-приложение в клиенте партнера CSP. Если приложение CPV используется для вызова API Центра партнеров, CPV должен создать новое веб-приложение в клиенте партнера CPV.

Если вы используете Azure Key Vault:

  1. Создайте Azure Key Vault с соответствующим <key-vault-name> именем, и оно приводит к dns-имени, например: https://<key-vault-name>.vault.azure.net
  2. Добавьте маркер обновления в хранилище ключей.

Предоставление доступа к хранилищу ключей

В политиках доступа хранилища ключей добавьте KeyVaultAccessApp с разрешениями только для управления аспектами получения и задания секрета.

Снимок экрана: необходимые разрешения для партнерского приложения CSP.

Настройка прототипа

Прототип имеет два приложения:

  • Согласие партнера: представляет веб-приложение, предназначенное для принятия согласия от партнера CSP и отображения сообщения об успешном выполнении.
    • Это приложение настраивает согласие и записывает маркер обновления согласия пользователя.
    • Маркер обновления согласия пользователя используется для создания маркера доступа для клиента партнера CSP.
  • Приложение CSP или приложение CPV: представляет основное приложение, которое вызывает API и граф Центра партнеров.
    • API для выполнения коммерческих и пользовательских действий от имени партнера.

Это приложение получает маркер доступа для определенной аудитории (API Центра партнеров или Graph) перед вызовом соответствующих API. Он использует маркер обновления, который хранится безопасно в хранилище ключей.

Веб-конфигурация CSP

Для партнерского приложения web.config CSP файл содержит следующие разделы. Обновите эти значения с соответствующими идентификаторами приложений и секретами. Для основного приложения используйте "сертификат" в качестве секрета веб-приложения вместо простых секретов, так как он обеспечивает дополнительный уровень безопасности.

<!-- AppID that represents CSP application -->
<add key="ida:CSPApplicationId" value="CSPApplicationIdValue" />
<!--
Please use certificate as your client secret and deploy the certificate to your environment.
The following application secret is for sample application only. please do not use secret directly from the config file.
-->
<add key="ida:CSPApplicationSecret" value="CSPApplicationSecretValue" />
<!-- AppID that is given access for keyvault to store the refresh tokens --> <add key="ida:KeyVaultClientId" value="KeyVaultClientIdValue" />
<!--
Please use certificate as your client secret and deploy the certificate to your environment.
The following application secret is for sample application only. please do not use secret directly from the config file.
-->
<add key="ida:KeyVaultClientSecret" value="KeyVaultClientSecretValue" />
<!-- AAD instance: Global is .com, for different national clouds it changes German cloud: .de, China cloud: login.chinacloudapi.cn -->
<add key="ida:AADInstance" value="https://login.microsoftonline.com/" />

Конфигурация приложения CSP

Для партнерского приложения app.config CSP файл содержит следующие разделы. Обновите значения с соответствующими идентификаторами приложений и секретами. Для основного приложения используйте "сертификат" в качестве секрета веб-приложения вместо простых секретов, так как он обеспечивает дополнительный уровень безопасности.

<!-- AppID that represents CSP application -->
<add key="ida:CPVApplicationId" value="CPVApplicationIdValue" />
<!--
Please use certificate as your client secret and deploy the certificate to your environment. The following application secret is for sample application only. please do not use secret directly from the config file.
-->
<add key="ida:CPVApplicationSecret" value="CPVApplicationSecretValue" />
<!-- AppID that is given access for keyvault to store the refresh tokens -->
<add key="ida:KeyVaultClientId" value="KeyVaultClientIdValue" />
<!--
Please use certificate as your client secret and deploy the certificate to your environment. The following application secret is for sample application only. please do not use secret directly from the config file.
-->
<add key="ida:KeyVaultClientSecret" value="KeyVaultClientSecretValue" />
<!-- AAD instance: Global is .com, for different national clouds it changes German cloud: .de,
China cloud: login.chinacloudapi.cn -->
<add key="ida:AADInstance" value="https://login.microsoftonline.com/" />

Поставщики услуг, использующие приложение CPV, могут вызывать API ApplicationConsent, чтобы создать субъект-службу в клиенте клиента, чтобы получить доступ к Microsoft Graph для управления клиентами клиентов. Дополнительные сведения см. в разделе "Проверка подлинности Центра партнеров".

Веб-конфигурация CPV

Для партнерского приложения web.config CSP файл содержит следующие разделы. Обновите эти значения с соответствующими идентификаторами приложений и секретами. Для основного приложения используйте "сертификат" в качестве секрета веб-приложения вместо простых секретов, так как он обеспечивает дополнительный уровень безопасности.

<!-- AppID that represents Control panel vendor application -->
<add key="ida:CPVApplicationId" value="CPVApplicationIdValue" />
<!--
Please use certificate as your client secret and deploy the certificate to your environment. The following application secret is for sample application only. please do not use secret directly from the config file.
-->
<add key="ida:CPVApplicationSecret" value="CPVApplicationSecretValue" />
<!-- AppID that is given access for keyvault to store the refresh tokens -->
<add key="ida:KeyVaultClientId" value="KeyVaultClientIdValue" />
<!--
Please use certificate as your client secret and deploy the certificate to your environment. The following application secret is for sample application only. please do not use secret directly from the config file.
-->
<add key="ida:KeyVaultClientSecret" value="KeyVaultClientSecretValue" />
<!-- AAD instance: Global is .com, for different national clouds it changes German cloud: .de, China cloud: login.chinacloudapi.cn -->
<add key="ida:AADInstance" value="https://login.microsoftonline.com/" />

Конфигурация приложения CPV

Для партнерского приложения app.config CPV файл содержит следующие разделы. Обновите значения с соответствующими идентификаторами приложений и секретами. Для основного приложения используйте "сертификат" в качестве секрета веб-приложения вместо простых секретов, так как он обеспечивает дополнительный уровень безопасности.

<!-- AppID that represents Control panel vendor application -->
<add key="ida:CPVApplicationId" value="CPVApplicationIdValue" />
<!--
Please use certificate as your client secret and deploy the certificate to your environment. The following application secret is for sample application only. please do not use secret directly from the config file.
-->
<add key="ida:CPVApplicationSecret" value="CPVApplicationSecretValue" />
<!-- AppID that is given access for keyvault to store the refresh tokens -->
<add key="ida:KeyVaultClientId" value="KeyVaultClientIdValue" />
<!--
Please use certificate as your client secret and deploy the certificate to your environment. The following application secret is for sample application only. please do not use secret directly from the config file.
-->
<add key="ida:KeyVaultClientSecret" value="KeyVaultClientSecretValue" />
<!-- AAD instance: Global is .com, for different national clouds it changes German cloud: .de, China cloud: login.chinacloudapi.cn -->
<add key="ida:AADInstance" value="https://login.microsoftonline.com/" />