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


Настройте пользовательского провайдера утверждений для события выдачи токена

В этой статье описывается, как настроить настраиваемого поставщика утверждений для события запуска выдачи токенов. Используя существующую REST API Функция Azure, вы зарегистрируете пользовательское расширение для проверки подлинности и укажите атрибуты, которые предполагается извлекать из вашего REST API. Чтобы протестировать пользовательское расширение аутентификации, вы зарегистрируете пример приложения OpenID Connect для получения токена и просмотра заявлений.

Предварительные условия

Шаг 1. Регистрация пользовательского расширения аутентификации

Теперь вы настроите пользовательское расширение проверки подлинности, которое будет использоваться идентификатором Microsoft Entra для вызова функции Azure. Расширение пользовательской аутентификации содержит информацию о конечной точке вашего REST API, утверждениях, которые оно получает из вашего REST API, и способах аутентификации в вашем REST API. Выполните следующие действия, чтобы зарегистрировать пользовательское расширение проверки подлинности в приложении-функции Azure.

Примечание.

У вас может быть не более 100 пользовательских политик расширений.

Регистрация пользовательского расширения для аутентификации

  1. Войдите в портал Azure в качестве как минимум администратором приложений и администратором проверки подлинности.
  2. Найдите и выберите идентификатор Microsoft Entra и выберите корпоративные приложения.
  3. Выберите пользовательские расширения проверки подлинности и затем выберите Создать пользовательское расширение.
  4. В разделе "Основы" выберите тип события TokenIssuanceStart и нажмите кнопку "Далее".
  5. В конфигурации конечной точки заполните следующие свойства:
    • Имя — название для настраиваемого расширения проверки подлинности. Например, событие выпуска токена.
    • Целевой URL - {Function_Url} URL вашей функции Azure. Перейдите на страницу обзора приложения-функции Azure, а затем выберите созданную функцию. На странице функции Обзор выберите Получить URL-адрес функции и используйте значок копирования, чтобы скопировать URL-адрес customauthenticationextension_extension (системный ключ).
    • Описание — описание пользовательских расширений проверки подлинности.
  6. Выберите Далее.
  7. В разделе "Проверка подлинности API" выберите параметр "Создать новое приложение", чтобы создать регистрацию приложения, представляющего приложение-функцию.
  8. Присвойте приложению имя, например API событий проверки подлинности в Azure Functions.
  9. Выберите Далее.
  10. В разделе "Утверждения" введите атрибуты, которые, как вы ожидаете, пользовательское расширение проверки подлинности извлечет из REST API и объединит в маркер. Добавьте следующие утверждения:
    • Дата рождения
    • НастраиваемыеРоли
    • ApiVersion
    • CorrelationId
  11. Нажмите кнопку "Далее" и "Создать", которая регистрирует пользовательское расширение проверки подлинности и связанную регистрацию приложения.
  12. Обратите внимание на идентификатор приложения в разделе "Проверка подлинности API", который необходим для настройки проверки подлинности для функции Azure в приложении-функции Azure.

После создания расширения пользовательской проверки подлинности необходимо предоставить API (интерфейсу программирования приложений) необходимые разрешения. Пользовательское расширение проверки подлинности использует client_credentials для аутентификации в приложении-функции Azure с помощью разрешения Receive custom authentication extension HTTP requests.

  1. Откройте страницу Обзор вашего нового настраиваемого расширения проверки подлинности. Запишите идентификатор приложения в разделе "Проверка подлинности API", так как это потребуется при добавлении поставщика удостоверений.

  2. В разделе "Проверка подлинности API" выберите "Предоставить разрешение".

  3. Откроется новое окно, и после входа будут запрашиваться разрешения на получение HTTP-запросов для пользовательского расширения аутентификации. Это позволяет пользовательскому расширению проверки подлинности аутентифицироваться в API. Выберите Принять.

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

Шаг 2. Настройка приложения OpenID Connect для получения обогащенных маркеров

Чтобы получить маркер и проверить пользовательское расширение проверки подлинности, можно использовать https://jwt.ms приложение. Это веб-приложение, принадлежащее Майкрософт, которое отображает декодированное содержимое токена (содержимое токена никогда не покидает браузер).

2.1 Регистрация тестового веб-приложения

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

  1. На странице Home в портале Azure выберите Microsoft Entra ID.

  2. Выберите Регистрация приложений >Новая регистрация.

  3. Введите имя приложения. Например, мое тестовое приложение.

  4. В разделе Поддерживаемые типы учетных записей выберите Учетные записи только в этом каталоге организации.

  5. В раскрывающемся списке "Выбор платформы " в URI перенаправления выберите веб-сайт и введите https://jwt.ms в текстовое поле URL-адреса.

  6. Нажмите кнопку "Регистрация", чтобы завершить регистрацию приложения.

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

  7. На странице «Обзор» регистрации приложения скопируйте идентификатор (клиента) приложения. Идентификатор приложения будет упоминаться как {App_to_enrich_ID} в последующих этапах. В Microsoft Graph на него ссылается свойство appId.

    Снимок экрана: копирование идентификатора приложения.

2.2 Включение неявного потока

Тестовое приложение jwt.ms использует неявный поток. Включите неявный поток в регистрации приложения My Test:

Это важно

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

  1. В разделе Управление выберите Проверка подлинности.
  2. В разделе Неявное предоставление разрешения и гибридные потоки установите флажок Токены ИД (используются для неявных и гибридных потоков).
  3. Выберите Сохранить.

2.3. Активируйте ваше приложение для политики сопоставления утверждений

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

  1. В вашей регистрации вашего приложения My Test, в разделе Управление, выберите Манифест.
  2. В манифесте найдите acceptMappedClaims атрибут и задайте для параметра значение true.
  3. Задайте для requestedAccessTokenVersion значение 2.
  4. Выберите Сохранить, чтобы сохранить изменения.

В следующем фрагменте КОДА JSON показано, как настроить эти свойства.

{
	"id": "22222222-0000-0000-0000-000000000000",
	"acceptMappedClaims": true,
	"requestedAccessTokenVersion": 2,  
    ...
}

Предупреждение

Не устанавливайте для свойства acceptMappedClaims значение true для мультитенантных приложений, которое может позволить злоумышленникам создавать политики сопоставления утверждений для вашего приложения. Вместо этого настройте пользовательский ключ подписи.

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

Шаг 3. Назначьте приложению пользовательского поставщика утверждений

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

Примечание.

Можно создавать только 250 уникальных назначений между приложениями и пользовательскими расширениями. Если вы хотите применить один и тот же пользовательский вызов расширения к нескольким приложениям, мы рекомендуем использовать authenticationEventListeners API Microsoft Graph для создания прослушивателей для нескольких приложений. Это не поддерживается в портале Azure.

Выполните следующие действия, чтобы подключить приложение "Мой тест" с пользовательским расширением проверки подлинности:

Назначение настраиваемого расширения проверки подлинности в качестве источника пользовательского поставщика утверждений;

  1. На странице Home в портале Azure выберите Microsoft Entra ID.

  2. Выберитекорпоративные приложения, а затем в разделе "Управление" выберите "Все приложения". Найдите и выберите приложение "Мой тест" в списке.

  3. На странице "Обзор" приложения "Мой тест" перейдите в раздел "Управление" и выберите единый вход.

  4. В разделе "Атрибуты и утверждения" выберите "Изменить".

    Снимок экрана: настройка утверждений приложения.

  5. Разверните меню "Дополнительные параметры".

  6. Рядом с поставщиком пользовательских утверждений выберите Настроить.

  7. Раскройте раскрывающийся список Поставщик пользовательских утверждений и выберите событие эмиссии токена, созданное ранее.

  8. Выберите Сохранить.

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

  1. Нажмите кнопку "Добавить новое утверждение", чтобы добавить новое утверждение. Назовите утверждение, которое вы хотите выдать, например DateOfBirth.

  2. В разделе "Источник" выберите атрибут и выберите customClaimsProvider.DateOfBirth в раскрывающемся списке "Исходный атрибут".

    Скриншот, показывающий, как добавить сопоставление утверждений в ваше приложение.

  3. Выберите Сохранить.

  4. Повторите этот процесс, чтобы добавить атрибуты customClaimsProvider.customRoles, customClaimsProvider.apiVersion и customClaimsProvider.correlationId и соответствующее имя. Рекомендуется сопоставить имя утверждения с именем атрибута.

Шаг 4. Защита функции Azure

Расширение пользовательской проверки подлинности Microsoft Entra использует взаимодействие между серверами для получения маркера доступа, который отправляется в заголовке HTTP Authorization в вашу функцию Azure. При публикации функции в Azure, особенно в рабочей среде, необходимо проверить маркер, отправленный в заголовке авторизации.

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

Примечание.

Если приложение-функция Azure размещается в другом клиенте Azure, отличном от клиента, в котором зарегистрировано пользовательское расширение проверки подлинности, перейдите на вкладку Open ID Connect .

4.1 Использование поставщика удостоверений Microsoft Entra

Выполните следующие действия, чтобы добавить Microsoft Entra в качестве поставщика удостоверений в приложение-функцию Azure.

  1. На портале Azure найдите и выберите ранее опубликованное функциональное приложение.

  2. В разделе Параметры выберите Проверка подлинности.

  3. Выберите Добавить поставщик идентификаций.

  4. Выберите Корпорацию Майкрософт в качестве поставщика удостоверений.

  5. Выберите "Сотрудники" в качестве типа клиента.

  6. В разделе Регистрация приложений выберите выберите существующую регистрацию приложения в этом каталоге для типа регистрации приложения, и выберите регистрацию приложения API событий проверки подлинности Azure Function, которую вы ранее создали при регистрации пользовательского поставщика утверждений.

  7. Введите следующий URL-адрес издателя, https://login.microsoftonline.com/{tenantId}/v2.0, где {tenantId} является идентификатором вашего рабочего арендатора.

  8. В разделе "Требование к клиентскому приложению" выберите "Разрешить запросы из определенных клиентских приложений " и введите 99045fe1-7639-4a75-9d4a-577b6ca3810f.

  9. В разделе "Требование арендатора" выберите "Разрешить запросы от определенных арендаторов" и введите идентификатор арендатора вашей рабочей группы.

  10. В разделе "Неавторизованные запросы" выберите HTTP 401 Unauthorized в качестве поставщика удостоверений.

  11. Отмените выбор параметра хранилища токенов.

  12. Выберите "Добавить ", чтобы добавить проверку подлинности в функцию Azure.

    Снимок экрана, показывающий, как добавить аутентификацию в приложение-функцию в режиме корпоративного клиента.

4.2 Использование поставщика удостоверений OpenID Connect

Если вы настроили поставщика удостоверений Майкрософт, пропустите этот шаг. В противном случае, если функция Azure размещена в другом клиенте, отличном от клиента, в котором зарегистрировано пользовательское расширение проверки подлинности, выполните следующие действия, чтобы защитить функцию:

Создание секрета клиента

  1. На домашней странице портала Azure выберите Microsoft Entra ID>Регистрация приложений.
  2. Выберите регистрацию приложения API событий аутентификации Azure Functions, созданную ранее.
  3. Выберите Сертификаты и секреты>Секреты клиента>Создать секрет клиента.
  4. Выберите срок действия секрета или укажите настраиваемое время существования, добавьте описание и нажмите кнопку "Добавить".
  5. Запишите значение секрета для использования в коде клиентского приложения. Это значение секрета больше нигде не отображается после закрытия страницы.

Добавьте поставщика удостоверений OpenID Connect в приложение-функцию Azure.

  1. Найдите и выберите приложение-функцию, которое вы ранее опубликовали.

  2. В разделе Параметры выберите Проверка подлинности.

  3. Выберите Добавить поставщик идентификаций.

  4. Выберите OpenID Connect в качестве поставщика удостоверений.

  5. Укажите имя, например ID Contoso Microsoft Entra.

  6. Под записью метаданных введите следующий URL-адрес в поле URL документа. Замените {tenantId} идентификатор клиента Microsoft Entra.

    https://login.microsoftonline.com/{tenantId}/v2.0/.well-known/openid-configuration
    
  7. В разделе регистрации приложений введите идентификатор приложения (идентификатор клиента) для регистрации приложения API событий проверки подлинности Функции Azure созданного вами ранее.

  8. Вернитесь в функцию Azure под регистрацией приложения, введите секрет клиента.

  9. Отмените выбор параметра хранилища токенов.

  10. Выберите «Добавить», чтобы добавить поставщика удостоверений OpenID Connect.

Шаг 5. Тестирование приложения

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

  1. Откройте новый частный браузер, перейдите по следующему URL-адресу и выполните вход.

    https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/authorize?client_id={App_to_enrich_ID}&response_type=id_token&redirect_uri=https://jwt.ms&scope=openid&state=12345&nonce=12345
    
  2. Замените {tenantId} на идентификатор клиента, имя клиента или одно из ваших проверенных доменных имен. Например, contoso.onmicrosoft.com.

  3. Замените {App_to_enrich_ID} идентификатором клиента приложения "Мой тест".

  4. После входа в систему вы увидите декодированный токен https://jwt.ms. Убедитесь, что утверждения из функции Azure представлены в декодированных маркерах, например DateOfBirth.

См. также