Обмен токена SAML, выданного AD FS, на маркер доступа Microsoft Graph

Чтобы включить единый вход в приложениях, которые используют токены SAML, выданные службами федерации Active Directory (AD FS) и также требуют доступа к Microsoft Graph, выполните действия, описанные в этой статье.

Вы включите поток утверждения носителя SAML для обмена токена SAMLv1, выданного экземпляром AD FS, на маркер доступа OAuth 2.0 для Microsoft Graph. Когда браузер пользователя перенаправляется на идентификатор Microsoft Entra для проверки подлинности, браузер выбирает сеанс из входа SAML вместо запроса пользователя ввести свои учетные данные.

Важно!

Этот сценарий работает только в том случае, если AD FS является федеративным поставщиком удостоверений, который выдал исходный токен SAMLv1. Вы не можете обменять токен SAMLv2, выданный идентификатором Microsoft Entra для маркера доступа Microsoft Graph.

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

Обзор сценария

Поток утверждения носителя OAuth 2.0 SAML позволяет запросить маркер доступа OAuth с помощью утверждения SAML, когда клиенту необходимо использовать существующее отношение доверия. Подпись, применяемая к утверждению SAML, обеспечивает проверку подлинности авторизованного приложения. Утверждение SAML — это маркер безопасности XML, выданный поставщиком удостоверений и используемый поставщиком услуг. Поставщик услуг использует его содержимое для идентификации субъекта утверждения в целях безопасности.

Утверждение SAML публикуется в конечной точке токена OAuth. Конечная точка обрабатывает утверждение и выдает маркер доступа, основанный на предыдущем утверждении приложения. Клиенту необязательно иметь или хранить маркер обновления, а также не требуется передавать секрет клиента в конечную точку маркера.

OAuth flow

Регистрация приложения с помощью идентификатора Microsoft Entra

Сначала зарегистрируйте приложение на портале:

  1. Войдите на страницу регистрации приложения на портале (обратите внимание, что мы используем конечные точки версии 2.0 для API Graph и поэтому необходимо зарегистрировать приложение в Центре администрирования Microsoft Entra. В противном случае мы могли бы использовать регистрацию в идентификаторе Microsoft Entra.
  2. Выберите Создать регистрацию.
  3. Когда появится страница регистрации приложения, введите сведения о регистрации приложения:
    1. Имя — введите информативное имя приложения, которое будет отображаться пользователям приложения.
    2. Поддерживаемые типы учетных записей — выберите учетные записи, которые должно поддерживать приложение.
    3. URI перенаправления (необязательно) — выберите тип приложения, которое вы создаете — веб или общедоступный клиент (для мобильных и классических приложений), а затем введите URI перенаправления (или URL-адрес ответа) приложения.
    4. По завершении щелкните Зарегистрировать.
  4. Запишите значение идентификатора приложения (клиента).
  5. В области слева щелкните Сертификаты и секреты. В разделе Секреты клиента выберите Новый секрет клиента. Скопируйте новый секрет клиента — вы не сможете получить его после выхода из страницы.
  6. В области слева выберите Разрешения API, а затем — Добавить разрешение. Нажмите Microsoft Graph и Делегированные разрешения, а затем выберите Tasks.read, так как мы планируем использовать API Graph Outlook.

Получение утверждения SAML из AD FS

Создайте запрос POST к конечной точке AD FS с помощью конверта SOAP, чтобы получить утверждение SAML:

Get SAML assertion

Значения заголовка:

Header values

Текст запроса AD FS:

AD FS request body

После успешной отправки запроса нужно получить утверждение SAML от AD FS. Требуются только данные тега SAML:Assertion. Преобразуйте их в кодировку Base64, чтобы использовать в дальнейших запросах.

Получение токена OAuth 2.0 с помощью утверждения SAML

Получите токен OAuth 2.0 с помощью ответа на утверждение AD FS.

  1. Создайте запрос POST, как показано ниже, со значениями заголовка:

    POST request

  2. В тексте запроса замените client_id, client_secret и assertion (утверждение SAML в кодировке Base64, полученное на предыдущем шаге):

    Request body

  3. По успешному запросу вы получите маркер доступа от идентификатора Microsoft Entra.

Получение данных с помощью токена OAuth 2.0

После получения маркера доступа вызовите API Graph (задачи Outlook в этом примере).

  1. Создайте запрос GET с маркером доступа, полученным на предыдущем шаге:

    GET request

  2. После выполнения запроса будет получен ответ JSON.

Следующие шаги

Дополнительные сведения о регистрации приложений и потоке проверки подлинности см. в следующих ресурсах: