Протокол единого выхода SAML
Идентификатор Microsoft Entra поддерживает профиль единого выхода в веб-браузере SAML 2.0. Чтобы единый выход работал правильно, во время регистрации приложения необходимо явно зарегистрировать logoutURL для приложения с идентификатором Microsoft Entra.
Если приложение добавляется в коллекцию приложений Azure, это значение можно задать по умолчанию. В противном случае значение должно быть определено и задано пользователем, добавляемым приложением в клиент Microsoft Entra. Идентификатор Microsoft Entra использует LogoutURL для перенаправления пользователей после выхода. Идентификатор Microsoft Entra поддерживает привязку перенаправления (HTTP GET), а не привязку HTTP POST.
На следующей схеме показан рабочий процесс единого выхода 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 с добавлением перед ним строки 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 задает 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
попытки выхода элемент также может содержать пользовательские сообщения об ошибках.