Регистрация приложения
Упражнение. Регистрация приложения
Чтобы включить вход приложения с помощью Внешняя идентификация Microsoft Entra, необходимо зарегистрировать приложение в каталоге.
Примечание.
Для регистрации приложения потребуется по крайней мере роль разработчика приложений в каталоге Application Developer.
Эта роль является привилегированной ролью. Ознакомьтесь с рекомендациями по работе с привилегированными ролями.
У вас есть отзывы? Пожалуйста, сообщите нам, как будет идти подтверждение проекта концепции. Мы хотели бы услышать ваше мнение!
Чтобы зарегистрировать собственное приложение, войдите в Центр администрирования Microsoft Entra и перейдите к Приложения>регистрации приложений. Затем нажмите кнопку +Создать регистрацию.
На появившемся экране "Регистрация приложения" введите понятное имя приложения, отображаемое пользователям приложения, например Woodgrove Groceries. В разделе "Поддерживаемые типы учетных записей" выберите только учетные записи в этом каталоге организации. Для платформы выберите веб-параметр и введите URI перенаправления приложения. URI перенаправления — это конечная точка, в которую пользователи перенаправляются Внешняя идентификация Microsoft Entra после завершения проверки подлинности с помощью Внешняя идентификация Microsoft Entra.
Панель обзора приложения отображается при успешной регистрации. Запишите идентификатор приложения (клиента), который будет использоваться в исходном коде приложения.
Чтобы добавить дополнительные URI перенаправления или URL-адрес выхода front-channel, в разделе Управление выберите Проверка подлинности. URL выхода из системы по фронтальному каналу — это URL, на который мы отправляем запрос, чтобы приложение очистило данные сеанса пользователя. Это требуется для правильной работы единого выхода.
Для получения маркера доступа веб-приложение (конфиденциальный клиент) требуется учетные данные для подтверждения удостоверения идентификатора Microsoft Entra. Сертификаты, секреты клиента (строка) или федеративные учетные данные удостоверения можно добавлять в качестве учетных данных для регистрации конфиденциального клиентского приложения. Для веб-сайта продуктов мы будем использовать сертификат. Чтобы добавить сертификат, выберите Сертификаты и секреты>Сертификаты>Загрузить сертификат.
Выберите отправляемый файл. Он должен быть одного из следующих типов файлов: CER, PEM, CRT. Затем нажмите кнопку "Добавить".
В следующих шагах необходимо добавить необходимое разрешение для веб-приложения. В разделе "Управление" выберите разрешения API, а затем нажмите кнопку "Добавить разрешение".
В разделе "Запрос разрешений API" перейдите на вкладку API Майкрософт и выберите Microsoft Graph.
Выберите параметр делегированных разрешений . Затем в разделе "Выбор разрешений" найдите и выберите как openid , так и offline_access разрешения. Чтобы завершить работу, нажмите кнопку "Добавить разрешения".
На этом этапе вы правильно назначили разрешения. Однако, поскольку клиент является внешним клиентом, пользователи-потребители сами не могут согласиться с этими разрешениями. Вы, как администратор должен дать согласие на эти разрешения от имени всех пользователей в клиенте: выберите " Предоставить согласие администратора"
<your tenant name>
, а затем нажмите кнопку "Да".Отлично! Теперь приложение готово к использованию.
1. Регистрация приложения
Чтобы зарегистрировать веб-приложение, используйте приведенный ниже запрос Microsoft Graph и замените следующие значения.
Значение displayName с показываемым именем вашего приложения. Например, продукты Woodgrove.
Значения redirectUris с URI перенаправления вашего приложения. Например, https://woodgrovedemo.com/signin-oidc. Также можно использовать https://www.jwt.ms/.
POST https://graph.microsoft.com/v1.0/applications { "displayName": "Woodgrove Groceries", "description": "Woodgrove Groceries live demo application", "signInAudience": "AzureADMyOrg", "api": { "acceptMappedClaims": true, "requestedAccessTokenVersion": 2 }, "requiredResourceAccess": [ { "resourceAppId": "a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1", "resourceAccess": [ { "id": "b1b1b1b1-cccc-dddd-eeee-f2f2f2f2f2f2", "type": "Scope" }, { "id": "c2c2c2c2-dddd-eeee-ffff-a3a3a3a3a3a3", "type": "Scope" } ] } ], "web": { "redirectUris": [ "https://woodgrovedemo.com/signin-oidc" ], "implicitGrantSettings": { "enableAccessTokenIssuance": false, "enableIdTokenIssuance": false } } }
1.1 Копирование идентификатора приложения
Скопируйте значение appId из ответа. Например:
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#applications/$entity",
"id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
"appId": "00001111-aaaa-2222-bbbb-3333cccc4444",
"displayName": "Woodgrove Groceries",
"description": "Woodgrove Groceries live demo application",
...
}
2. Создание субъекта-службы для приложения
После регистрации приложения создайте учетную запись службы. Следующий вызов Graph создает субъект-службу. Замените {appId} на appId из предыдущего вызова (не идентификатор объекта).
POST https://graph.microsoft.com/v1.0/servicePrincipals
{
"appId": "{appId}"
}
2.1 Копирование идентификатора субъекта-службы
Скопируйте значение идентификатора из ответа. Например:
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#servicePrincipals/$entity",
"id": "bbbbbbbb-1111-2222-3333-cccccccccccc",
"displayName": "Woodgrove Groceries",
"description": "Woodgrove Groceries live demo application",
...
}
3. Согласие на необходимые разрешения
Поскольку клиент является внешним клиентом, пользователи-потребители сами не могут согласиться с этими разрешениями. Вы, как администратор, должны согласиться с этими разрешениями от имени всех пользователей в клиенте.
3.1 Получение идентификатора субъекта-службы Microsoft Graph
Выполните следующий запрос GET и скопируйте идентификатор из ответа:
GET https://graph.microsoft.com/v1.0/servicePrincipals(appId='22223333-cccc-4444-dddd-5555eeee6666')
{
"id": "cccccccc-2222-3333-4444-dddddddddddd",
"appDisplayName": "Microsoft Graph",
"appId": "22223333-cccc-4444-dddd-5555eeee6666"
}
3.2 Предоставление необходимых разрешений
Замените {service-principal-id}идентификатором субъекта-службы, скопированным на предыдущем шаге. Замените {graph-service-principal-id}идентификатором субъекта-службы, скопированным на последнем шаге.
POST https://graph.microsoft.com/v1.0/oauth2PermissionGrants
{
"clientId": "{service-principal-id}",
"consentType": "AllPrincipals",
"resourceId": "{graph-service-principal-id}",
"scope": "openid offline_access"
}
4. Добавление секрета клиента (необязательно)
Учетные данные позволяют конфиденциальным приложениям идентифицировать себя в службе проверки подлинности при получении маркеров. Для более высокого уровня гарантии рекомендуется использовать сертификат (вместо секрета клиента) в качестве учетных данных. Чтобы получить секрет клиента, выполните следующий запрос. Замените {graph-service-principal-id} на идентификатор appId из первого шага.
POST https://graph.microsoft.com/v1.0/applications(appId='appId')/addPassword
{
"passwordCredential": {
"displayName": "My app client secret"
}
}
Скопируйте значение secretText из ответа:
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#microsoft.graph.passwordCredential",
"displayName": "My app client secret",
"endDateTime": "2026-05-23T15:16:42",
"hint": "<Your hint will show up here>",
"keyId": "aaaaaaaa-0b0b-1c1c-2d2d-333333333333",
"secretText": "A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0u",
"startDateTime": "2024-05-23T15:16:42"
}