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


Протокол единого выхода SAML

Идентификатор Microsoft Entra поддерживает профиль единого выхода в веб-браузере SAML 2.0. Чтобы единый выход работал правильно, во время регистрации приложения необходимо явно зарегистрировать logoutURL для приложения с идентификатором Microsoft Entra.

Если приложение добавляется в коллекцию приложений Azure , это значение можно задать по умолчанию. В противном случае значение должно быть определено и задано пользователем, добавляемым приложением в клиент Microsoft Entra. Идентификатор Microsoft Entra использует LogoutURL для перенаправления пользователей после выхода. Идентификатор Microsoft Entra поддерживает привязку перенаправления (HTTP GET), а не привязку HTTP POST.

На следующей схеме показан рабочий процесс единого выхода Microsoft Entra.

Снимок экрана: рабочий процесс единого выхода Microsoft Entra.

LogoutRequest

Облачная служба отправляет LogoutRequest сообщение в идентификатор Microsoft Entra, чтобы указать, что сеанс был завершен. В следующем отрывке показан пример LogoutRequest элемента.

<samlp:LogoutRequest xmlns="urn:oasis:names:tc:SAML:2.0:metadata" ID="idaa6ebe6839094fe4abc4ebd5281ec780" Version="2.0" IssueInstant="2013-03-28T07:10:49.6004822Z" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
  <Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">https://www.workaad.com</Issuer>
  <NameID xmlns="urn:oasis:names:tc:SAML:2.0:assertion"> Uz2Pqz1X7pxe4XLWxV9KJQ+n59d573SepSAkuYKSde8=</NameID>
</samlp:LogoutRequest>

Для элемента, LogoutRequest отправленного в идентификатор Microsoft Entra ID, требуются следующие атрибуты:

  • ID — Это определяет запрос на выход. Значение ID не должно начинаться с числа. Типичной практикой является добавление идентификатора в строковое представление GUID.
  • Version — задайте для этого элемента значение 2.0. Это значение является обязательным.
  • IssueInstant — Это DateTime строка со значением utc координат и форматом кругового пути ("o"). Идентификатор Microsoft Entra ожидает значение этого типа, но не применяет его.

В разделе 3.7 основной спецификации SAML 2.0 может быть несколько участников (других приложений) в сеансе, кроме приложения. Если один из других участников отправляет на LogoutRequest платформу удостоверений Майкрософт (центр сеанса), он отправит LogoutRequest обратно всем участникам сеанса, кроме участника, отправившего начальную LogoutRequest. Если другой участник одновременно инициировал выход, будет гонка, чтобы увидеть, какой LogoutRequest достигает платформы удостоверений Майкрософт сначала. Поэтому приложение всегда должно быть готово к обработке LogoutRequest.

Эмитент

Элемент Issuer в объекте LogoutRequest должен точно соответствовать одному из servicePrincipalNames в облачной службе в идентификаторе Microsoft Entra ID. Как правило, этот параметр имеет значение URI идентификатора приложения, указанного во время регистрации приложения.

ИдентификаторИмени

Значение NameID элемента должно точно соответствовать NameID пользователю, который выполняется выход.

Замечание

Во время запроса NameID на выход SAML значение не учитывается идентификатором Microsoft Entra.
Если один сеанс пользователя активен, идентификатор Microsoft Entra будет автоматически выбирать этот сеанс, а выход SAML будет продолжаться.
Если несколько сеансов пользователей активны, идентификатор Microsoft Entra перечисляет активные сеансы для выбора пользователей. После выбора пользователя будет продолжаться выход SAML.

LogoutResponse

Идентификатор Microsoft Entra отправляет LogoutResponse ответ на LogoutRequest элемент. В следующем фрагменте показан пример LogoutResponse.

<samlp:LogoutResponse ID="_f0961a83-d071-4be5-a18c-9ae7b22987a4" Version="2.0" IssueInstant="2013-03-18T08:49:24.405Z" InResponseTo="iddce91f96e56747b5ace6d2e2aa9d4f8c" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
  <Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">https://login.microsoftonline.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/</Issuer>
  <samlp:Status>
    <samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success" />
  </samlp:Status>
</samlp:LogoutResponse>

Идентификатор Microsoft Entra задает значения ID, Version и IssueInstant в элементе LogoutResponse. Он также задает InResponseTo элемент значению ID атрибута LogoutRequest , который вызвал ответ.

Эмитент

Идентификатор Microsoft Entra задает это значение, в https://login.microsoftonline.com/<TenantIdGUID>/ котором <TenantIdGUID> является идентификатором клиента Microsoft Entra.

Чтобы правильно определить элемент издателя, используйте значение https://login.microsoftonline.com/<TenantIdGUID>/ , как показано в примере LogoutResponse. Этот формат URL-адреса определяет клиент Microsoft Entra в качестве издателя, представляющего центр, ответственный за выдачу ответа.

Состояние

Идентификатор Microsoft Entra использует StatusCode элемент в элементе Status , чтобы указать успешность или сбой выхода. При сбое StatusCode попытки выхода элемент также может содержать пользовательские сообщения об ошибках.