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


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

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

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

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

Screenshot of the Microsoft Entra Single Sign Out Workflow.

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 с добавлением перед ним строки id .
  • 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 для пользователя, выполняющего выход.

Примечание.

Во время запроса 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 задает IDVersion значения и 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 попытки выхода элемент также может содержать пользовательские сообщения об ошибках.