Активирование структуры безопасной модели приложений
Корпорация Майкрософт вводит безопасную масштабируемую платформу для проверки подлинности партнеров поставщика облачных решений (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 от угроз безопасности.
Образцы
В следующих документах обзора и примере кода описывается, как партнеры могут реализовать платформу модели безопасных приложений:
-
Центр партнеров Java SDK можно использовать для управления ресурсами Центра партнеров. Это проект с открытым исходным кодом, поддерживаемый сообществом партнеров и официально не поддерживаемый корпорацией Майкрософт. Вы можете получить помощь от сообщества или открыть проблему на сайте GitHub, если возникла проблема.
ОТДЫХ
Чтобы выполнить вызовы REST с помощью платформы secure Application Model с примером кода, выполните следующие действия.
- Включение фреймворка безопасной модели приложений
- включение фреймворка модели безопасного приложения
Создание веб-приложения
Создайте приложение Microsoft Entra.
Предоставьте делегированные разрешения приложения следующим ресурсам, в зависимости от требований вашего приложения. При необходимости можно добавить дополнительные делегированные разрешения для ресурсов приложения.
Microsoft Partner Center (некоторые клиенты показывают SampleBECApp)
API управления Azure (если вы планируете вызывать API Azure)
Windows Azure Active Directory
Убедитесь, что для домашнего URL-адреса приложения задана конечная точка, в которой выполняется динамическое веб-приложение. Это приложение должно принять коды авторизации и из вызова входа в систему Microsoft Entra. Например, в примере кода в следующем разделе веб-приложение выполняется в
https://localhost:44395/
.Запомните следующую информацию из настроек вашего веб-приложения в системе идентичности Microsoft Entra.
- Идентификатор приложения
- Секрет приложения
Заметка
Рекомендуется использовать сертификат в качестве секрета приложения. Однако вы также можете создать ключ приложения на портале Azure. Пример кода в следующем разделе использует ключ приложения.
Получение кода авторизации
Чтобы ваше веб-приложение принимало вызов входа Microsoft Entra, необходимо получить код авторизации:
Войдите в Microsoft Entra ID.
Обязательно войдите в систему с учетной записью пользователя, из которой выполняется вызов API Центра партнеров (например, агент администрирования или учетная запись агента продаж).
Замените идентификатор приложения идентификатором приложения Microsoft Entra (GUID).
При появлении запроса войдите в систему, используя учетную запись пользователя с настроенной многофакторной аутентификацией.
При появлении запроса предоставьте дополнительные сведения для многофакторной аутентификации (номер телефона или адрес электронной почты), чтобы подтвердить ваш вход.
После входа браузер перенаправит вызов в конечную точку веб-приложения с кодом авторизации. Например, следующий пример кода перенаправляется на
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>
Получение маркера обновления
Затем необходимо использовать код авторизации для получения токена обновления.
Выполните POST-запрос к конечной точке входа Microsoft Entra
https://login.microsoftonline.com/CSPTenantID/oauth2/token
с кодом авторизации. Для примера см. следующий вызов образца .Обратите внимание на возвращаемый токен обновления.
Сохраните маркер обновления в 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.
Установите модули Microsoft Entra ID и Центра партнеров PowerShell.
Install-Module AzureAD
Install-Module PartnerCenter
Используйте команду 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, вам будет предложено снова ввести учетные данные. Введите учетные данные для используемой учетной записи службы. Эта учетная запись службы должна быть учетной записью партнера с соответствующими разрешениями.
Скопируйте значение маркера обновления.
$token.RefreshToken | clip
Значение маркера обновления следует хранить в безопасном репозитории, например Azure Key Vault. Дополнительные сведения об использовании модуля безопасного приложения с PowerShell см. в статье многофакторной проверки подлинности.