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


Активирование структуры безопасной модели приложений

Корпорация Майкрософт вводит безопасную масштабируемую платформу для проверки подлинности партнеров поставщика облачных решений (CSP) и поставщиков панели управления (CPV) с помощью архитектуры многофакторной проверки подлинности (MFA) Microsoft Entra.

Вы можете использовать новую модель для повышения безопасности вызовов интеграции API Центра партнеров. Это помогает всем сторонам (включая Microsoft, партнеров CSP и CPVs) защитить свою инфраструктуру и данные клиентов от угроз безопасности.

Программа CSP позволяет клиентам покупать продукты и услуги Майкрософт через партнеров. Согласно соглашению с Корпорацией Майкрософт, партнерам необходимо управлять средой для клиентов, которым они продаются и предоставляют поддержку. Клиенты, которые покупают через этот канал, должны проявить высокий уровень доверия к партнеру, у которого они покупают, так как у компании партнера есть административные права высокого уровня к арендатору клиента.

Размах

Эта статья относится как к CSP, так и к CPV.

CPV

  • CPV — это независимый поставщик программного обеспечения, который разрабатывает приложения для использования партнерами CSP для интеграции с API Центра партнеров.
  • CPV не является партнером CSP с прямым доступом к Центру партнеров или API.

поставщики облачных услуг

  • Косвенные поставщики CSP и прямые партнеры CSP, использующие идентификатор приложения + проверку подлинности пользователя и напрямую интегрируются с API Центра партнеров.

Требования к безопасности

Дополнительные сведения о требованиях к безопасности см. в требованиях к безопасности партнеров.

Модель безопасного приложения

Приложения Marketplace должны имитировать привилегии партнера CSP, чтобы вызывать API Microsoft. Атаки безопасности на эти конфиденциальные приложения могут привести к компрометации данных клиента.

Обзор и подробности о новой платформе проверки подлинности см. в модели безопасных приложений Secure Application Model, которая охватывает принципы и рекомендации по обеспечению устойчивости и надежности приложений marketplace от угроз безопасности.

Образцы

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

ОТДЫХ

Чтобы выполнить вызовы REST с помощью платформы secure Application Model с примером кода, выполните следующие действия.

  1. Создание веб-приложения

Создание веб-приложения

  1. Войдите на портал Azure .

  2. Создайте приложение Microsoft Entra.

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

    1. Microsoft Partner Center (некоторые клиенты показывают SampleBECApp)

    2. API управления Azure (если вы планируете вызывать API Azure)

    3. Windows Azure Active Directory

  4. Убедитесь, что для домашнего URL-адреса приложения задана конечная точка, в которой выполняется динамическое веб-приложение. Это приложение должно принять коды авторизации и из вызова входа в систему Microsoft Entra. Например, в примере кода в следующем разделе веб-приложение выполняется в https://localhost:44395/.

  5. Запомните следующую информацию из настроек вашего веб-приложения в системе идентичности Microsoft Entra.

    • Идентификатор приложения
    • Секрет приложения

Заметка

Рекомендуется использовать сертификат в качестве секрета приложения. Однако вы также можете создать ключ приложения на портале Azure. Пример кода в следующем разделе использует ключ приложения.

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

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

  1. Войдите в Microsoft Entra ID.

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

  2. Замените идентификатор приложения идентификатором приложения Microsoft Entra (GUID).

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

  4. При появлении запроса предоставьте дополнительные сведения для многофакторной аутентификации (номер телефона или адрес электронной почты), чтобы подтвердить ваш вход.

  5. После входа браузер перенаправит вызов в конечную точку веб-приложения с кодом авторизации. Например, следующий пример кода перенаправляется на https://localhost:44395/.

Трассировка вызова авторизационного кода

POST https://localhost:44395/ HTTP/1.1
Origin: https://login.microsoftonline.com
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Referrer: https://login.microsoftonline.com/kmsi
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Cookie: OpenIdConnect.nonce.hOMjjrivcxzuI4YqAw4uYC%2F%2BILFk4%2FCx3kHTHP3lBvA%3D=dHVyRXdlbk9WVUZFdlFONVdiY01nNEpUc0JRR0RiYWFLTHhQYlRGNl9VeXJqNjdLTGV3cFpIWFg1YmpnWVdQUURtN0dvMkdHS2kzTm02NGdQS09veVNEbTZJMDk1TVVNYkczYmstQmlKUzFQaTBFMEdhNVJGVHlES2d3WGlCSlVlN1c2UE9sd2kzckNrVGN2RFNULWdHY2JET3RDQUxSaXRfLXZQdG00RnlUM0E1TUo1YWNKOWxvQXRwSkhRYklQbmZUV3d3eHVfNEpMUUthMFlQUFgzS01RS2NvMXYtbnV4UVJOYkl4TTN0cw%3D%3D

code=AuthorizationCodeValue&id_token=IdTokenValue&<rest of properties for state>

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

Затем необходимо использовать код авторизации для получения токена обновления.

  1. Выполните POST-запрос к конечной точке входа Microsoft Entra https://login.microsoftonline.com/CSPTenantID/oauth2/token с кодом авторизации. Для примера см. следующий вызов образца .

  2. Обратите внимание на возвращаемый токен обновления.

  3. Сохраните маркер обновления в Azure Key Vault. Дополнительные сведения см. в документации по API Key Vault .

Важный

Маркер обновления должен храниться в качестве секрета в Key Vault.

Пример вызова обновления

Запрос плейсхолдера:

POST https://login.microsoftonline.com/CSPTenantID/oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: login.microsoftonline.com
Content-Length: 966
Expect: 100-continue

Текст запроса:

resource=https%3a%2f%2fapi.partnercenter.microsoft.com&client_id=Application-Id&client_secret=Application-Secret&grant_type=authorization_code&code=AuthorizationCodeValue

Ответ заполнителя:

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store
Content-Type: application/json; charset=utf-8

Текст ответа:

{"token_type":"Bearer","scope":"user_impersonation","expires_in":"3600","ext_expires_in":"3600","expires_on":"1547581389","not_before":"1547577489","resource":"https://api.partnercenter.microsoft.com","access_token":"AccessTokenValue","id_token":"IDTokenValue"}

Получение маркера доступа

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

Запрос заполнителя:

POST https://login.microsoftonline.com/CSPTenantID/oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: login.microsoftonline.com
Content-Length: 1212
Expect: 100-continue

Текст запроса:

resource=https%3a%2f%2fapi.partnercenter.microsoft.com&client_id=Application-Id &client_secret= Application-Secret&grant_type=refresh_token&refresh_token=RefreshTokenVlaue&scope=openid

Ответ заполнителя:

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store
Content-Type: application/json; charset=utf-8

Текст ответа:

{"token_type":"Bearer","scope":"user_impersonation","expires_in":"3600","ext_expires_in":"3600","expires_on":"1547581389","not_before":"1547577489","resource":"https://api.partnercenter.microsoft.com","access_token":"AccessTokenValue","id_token":"IDTokenValue"}

Совершение вызовов API Центра партнеров

Для вызова API Центра партнеров необходимо использовать маркер доступа. См. следующий пример вызова.

Пример вызова API Центра партнеров

GET https://api.partnercenter.microsoft.com/v1/customers/CustomerTenantId/users HTTP/1.1
Authorization: Bearer AccessTokenValue
Accept: application/json
X-Locale: en-US
Host: api.partnercenter.microsoft.com

PowerShell

Модуль PowerShell Центра партнеров можно использовать для управления ресурсами Центра партнеров. Это проект с открытым исходным кодом, поддерживаемый сообществом партнеров и официально не поддерживаемый корпорацией Майкрософт. Вы можете получить помощь от сообщества или открыть проблему на сайте GitHub, если возникла проблема.

Модуль PowerShell центра партнеров можно использовать для уменьшения требуемой инфраструктуры для обмена кодом авторизации для маркера доступа. Этот метод необязателен для вызовов REST Центра партнеров.

Дополнительные сведения об этом процессе см. в документации по модели безопасных приложений PowerShell.

  1. Установите модули Microsoft Entra ID и Центра партнеров PowerShell.

    Install-Module AzureAD
    
    Install-Module PartnerCenter
    
  2. Используйте команду New-PartnerAccessToken для выполнения процесса согласия и получения требуемого токена обновления.

    $credential = Get-Credential
    
    $token = New-PartnerAccessToken -ApplicationId 'xxxx-xxxx-xxxx-xxxx' -Scopes 'https://api.partnercenter.microsoft.com/user_impersonation' -ServicePrincipal -Credential $credential -Tenant 'yyyy-yyyy-yyyy-yyyy' -UseAuthorizationCode
    

    Заметка

    Параметр ServicePrincipal используется с командой New-PartnerAccessToken, так как используется приложение Microsoft Entra с типом Web / API. Для этого типа приложения требуется, чтобы идентификатор клиента и секрет были добавлены в запрос токена доступа. При вызове команды Get-Credential вам будет предложено ввести имя пользователя и пароль. Введите идентификатор приложения в качестве имени пользователя. Введите секрет приложения в качестве пароля. Когда вызывается команда New-PartnerAccessToken, вам будет предложено снова ввести учетные данные. Введите учетные данные для используемой учетной записи службы. Эта учетная запись службы должна быть учетной записью партнера с соответствующими разрешениями.

  3. Скопируйте значение маркера обновления.

    $token.RefreshToken | clip
    

Значение маркера обновления следует хранить в безопасном репозитории, например Azure Key Vault. Дополнительные сведения об использовании модуля безопасного приложения с PowerShell см. в статье многофакторной проверки подлинности.