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

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

Необходимые компоненты

  • Подписка Azure с возможностью создания Функции Azure. Если у вас нет существующей учетной записи Azure, зарегистрируйтесь на бесплатную пробную версию или воспользуйтесь преимуществами подписки Visual Studio при создании учетной записи.
  • Приложение-функция Azure с функцией триггера HTTP, настроенной для события запуска выдачи маркеров. Если у вас его нет, выполните действия, описанные в статье о создании функции триггера триггера HTTP для выдачи маркеров.
  • Базовое понимание концепций, описанных в обзоре расширений пользовательской проверки подлинности.
  • Клиент идентификатора Microsoft Entra. Для этого руководства можно использовать клиент или клиент рабочей силы.
    • Для внешних клиентов используйте поток пользователя регистрации и входа.

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

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

Примечание.

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

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

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

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

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

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

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

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

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

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

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

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

  1. На домашнейстранице в портал Azure выберите идентификатор Microsoft Entra.

  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. В разделе "Управление" в разделе "Управление" в разделе "Мои тестовые приложения" выберите "Манифест".
  2. В манифесте найдите acceptMappedClaims атрибут и задайте для параметра значение true.
  3. Задайте для accessTokenAcceptedVersion значение 2.
  4. Выберите Сохранить, чтобы сохранить изменения.

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

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

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

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

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

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

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

Примечание.

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

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

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

  1. На домашнейстранице в портал Azure выберите идентификатор Microsoft Entra.

  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. Выберите одну из следующих вкладок на основе типа клиента.

Примечание.

Если приложение-функция Azure размещается в другом клиенте Azure, отличном от клиента, в котором зарегистрировано пользовательское расширение проверки подлинности, перейдите на вкладку "Открыть идентификатор Подключение".

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

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

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

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

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

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

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

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

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

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

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

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

    Снимок экрана: добавление проверки подлинности в приложение-функцию во время работы в клиенте рабочей силы.

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

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

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

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

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

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

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

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

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

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

  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 Подключение.

Шаг 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.

См. также