单一注销 SAML 协议

Microsoft Entra ID 支持 SAML 2.0 Web 浏览器单一注销配置文件。 要使单一注销正常工作,必须在应用程序注册期间向 Microsoft Entra ID 显式注册应用程序的 LogoutURL

如果将应用添加到 Azure 应用库,则默认情况下可以设置此值。 否则,必须由将应用添加到其 Microsoft Entra ID 租户的人员确定和设置此值。 Microsoft Entra ID 使用“LogoutURL”在用户注销后重定向用户。Microsoft Entra ID 支持重定向绑定 (HTTP GET),不支持 HTTP POST 绑定。

下图显示了Microsoft Entra ID 单一注销过程的工作流。

Screenshot of the Microsoft Entra Single Sign Out Workflow.

LogoutRequest

云服务将 LogoutRequest 消息发送到 Microsoft Entra ID,以指示会话已终止。 以下摘录显示了一个示例 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>

发送到 Microsoft Entra ID 的 LogoutRequest 元素需要以下属性:

  • ID - 此项标识注销请求。 ID 的值不能以数字开头。 典型的做法是在 GUID 的字符串表示形式前面追加 ID
  • Version - 将此元素的值设置为 2.0。 此值是必需的。
  • IssueInstant - 这是一个 DateTime 字符串,它包含协调世界时 (UTC) 值并采用往返格式 ("o")。 Microsoft Entra ID 需要此类型的值,但不强制要求。

根据 SAML 2.0 核心规范的第 3.7 节,除了应用程序之外,一个会话中还可以有多个参与者(其他应用程序)。 如果其中一个其他参与者向 Microsoft 标识平台(会话授权)发送 LogoutRequest,则它会将 LogoutRequest 发送回所有会话参与者,但发送初始 LogoutRequest 的参与者除外。 如果另一个参与者同时发起注销,则会有一场竞赛,看看哪个 LogoutRequest 先到达 Microsoft 标识平台。 因此,应用程序应始终准备好处理 LogoutRequest

颁发者

LogoutRequest 中的 Issuer 元素必须与 Microsoft Entra ID 中云服务的 ServicePrincipalNames 之一完全匹配。 通常,此参数设置为应用程序注册期间指定的应用 ID URI

NameID

NameID 元素的值必须与所要注销的用户的 NameID 完全匹配。

注意

在 SAML 注销请求期间,Microsoft Entra ID 不会考虑 NameID 值。
如果单个用户会话处于活动状态,Microsoft Entra ID 会自动选择该会话,然后 SAML 注销将继续。
如果多个用户会话处于活动状态,Microsoft Entra ID 将枚举活动会话供用户选择。 用户选择后,SAML 注销将继续。

LogoutResponse

Microsoft Entra ID 发送 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 设置 LogoutResponse 元素中的 IDVersionIssueInstant 值。 它还将 InResponseTo 元素设置为获取响应的 LogoutRequestID 属性值。

颁发者

Microsoft Entra ID 将此值设置为 https://login.microsoftonline.com/<TenantIdGUID>/,其中 TenantIdGUID<> 是 Microsoft Entra 租户的租户 ID。

若要正确标识证书颁发者元素,请使用值 https://login.microsoftonline.com/<TenantIdGUID>/,如示例 LogoutResponse 中所示。 此 URL 格式会将 Microsoft Entra 租户标识为证书颁发者,以表示负责发出响应的颁发机构。

状态

Microsoft Entra ID 使用 Status 元素中的 StatusCode 元素来指示注销的成功或失败。当注销尝试失败时,StatusCode 元素还可能包含自定义错误消息。