Регистрация приложения

Завершено

Упражнение. Регистрация приложения

Чтобы включить вход приложения с помощью Внешняя идентификация Microsoft Entra, необходимо зарегистрировать приложение в каталоге.

Примечание.

Для регистрации приложения потребуется по крайней мере роль разработчика приложений в каталоге Application Developer.

Эта роль является привилегированной ролью. Ознакомьтесь с рекомендациями по работе с привилегированными ролями.

У вас есть отзывы? Пожалуйста, сообщите нам, как будет идти подтверждение проекта концепции. Мы хотели бы услышать ваше мнение!

  1. Чтобы зарегистрировать собственное приложение, войдите в Центр администрирования Microsoft Entra и перейдите к Приложения>регистрации приложений. Затем нажмите кнопку +Создать регистрацию.

    Снимок экрана: колонка

  2. На появившемся экране "Регистрация приложения" введите понятное имя приложения, отображаемое пользователям приложения, например Woodgrove Groceries. В разделе "Поддерживаемые типы учетных записей" выберите только учетные записи в этом каталоге организации. Для платформы выберите веб-параметр и введите URI перенаправления приложения. URI перенаправления — это конечная точка, в которую пользователи перенаправляются Внешняя идентификация Microsoft Entra после завершения проверки подлинности с помощью Внешняя идентификация Microsoft Entra.

    Снимок экрана: колонка

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

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

  4. Чтобы добавить дополнительные URI перенаправления или URL-адрес выхода front-channel, в разделе Управление выберите Проверка подлинности. URL выхода из системы по фронтальному каналу — это URL, на который мы отправляем запрос, чтобы приложение очистило данные сеанса пользователя. Это требуется для правильной работы единого выхода.

    Снимок экрана страницы

  5. Для получения маркера доступа веб-приложение (конфиденциальный клиент) требуется учетные данные для подтверждения удостоверения идентификатора Microsoft Entra. Сертификаты, секреты клиента (строка) или федеративные учетные данные удостоверения можно добавлять в качестве учетных данных для регистрации конфиденциального клиентского приложения. Для веб-сайта продуктов мы будем использовать сертификат. Чтобы добавить сертификат, выберите Сертификаты и секреты>Сертификаты>Загрузить сертификат.

    Снимок экрана: колонка

  6. Выберите отправляемый файл. Он должен быть одного из следующих типов файлов: CER, PEM, CRT. Затем нажмите кнопку "Добавить".

    Снимок экрана: панель

  7. В следующих шагах необходимо добавить необходимое разрешение для веб-приложения. В разделе "Управление" выберите разрешения API, а затем нажмите кнопку "Добавить разрешение".

    Снимок экрана: разрешения API в разделе

  8. В разделе "Запрос разрешений API" перейдите на вкладку API Майкрософт и выберите Microsoft Graph.

    Снимок экрана: область разрешений API запроса открыта справа с выделенной группой выбора Microsoft Graph.

  9. Выберите параметр делегированных разрешений . Затем в разделе "Выбор разрешений" найдите и выберите как openid , так и offline_access разрешения. Чтобы завершить работу, нажмите кнопку "Добавить разрешения".

    Снимок экрана: область разрешений API открыта справа с выделенной группой делегированных разрешений и разрешениями для offline_access и openid с флажками под ними.

  10. На этом этапе вы правильно назначили разрешения. Однако, поскольку клиент является внешним клиентом, пользователи-потребители сами не могут согласиться с этими разрешениями. Вы, как администратор должен дать согласие на эти разрешения от имени всех пользователей в клиенте: выберите " Предоставить согласие администратора" <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.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"
}