You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Azure AD B2C的SAML单点登出实现问题咨询

Azure AD B2C + AEM SAML单点登出实现方案

1. 是否需要独立的登出自定义流程XML?

不需要单独创建登出流程的XML文件,登出相关配置直接整合到你现有的**扩展策略文件(Extension.xml)**里就行,不用额外拆分独立流程。

2. 正确的单点登出配置步骤

步骤1:配置AEM的登出请求触发

AEM作为SAML服务提供商(SP),点击登出按钮时,要向B2C的SAML IDP登出端点发送请求,端点格式如下:

https://<你的B2C租户名>.b2clogin.com/<你的B2C租户名>.onmicrosoft.com/<你的注册登录策略ID>/samlp/logout

确保AEM的登出逻辑指向这个地址。

步骤2:配置B2C应用注册的登出相关URL

  • 在B2C应用注册的前端通道登出URL中,填写AEM的登出回调地址(比如https://<你的AEM域名>/system/sling/logout)
  • 同时在应用注册的允许的重定向URI中,添加你设置的post_logout_redirect_uri对应的页面地址(比如你的HTML页面)

步骤3:完善扩展策略文件中的登出内容定义

你之前添加的api.logout代码需要放在扩展策略文件的<BuildingBlocks> -> <ContentDefinitions>节点下(如果没有<ContentDefinitions>节点,直接新建),正确配置如下:

<BuildingBlocks>
  <ContentDefinitions>
    <ContentDefinition Id="api.logout">
      <LoadUri>~/tenant/default/logout</LoadUri>
      <RecoveryUri>~/common/default_page_error.html</RecoveryUri>
      <DataUri>urn:com:microsoft:aad:b2c:elements:unifiedssp:1.2.0</DataUri>
      <Metadata>
        <Item Key="DisplayName">Logout Page</Item>
        <Item Key="DefaultLogoutPageWithRedirectUri">true</Item>
      </Metadata>
    </ContentDefinition>
  </ContentDefinitions>
</BuildingBlocks>

DefaultLogoutPageWithRedirectUri设为true是关键,它会让B2C完成登出后自动跳转到指定的post_logout_redirect_uri。

步骤4:在RelyingParty节点添加登出元数据

在自定义策略的<RelyingParty> -> <TechnicalProfile>节点下,补充SAML登出相关的元数据:

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
  <TechnicalProfile Id="PolicyProfile">
    <DisplayName>PolicyProfile</DisplayName>
    <Protocol Name="SAML2" />
    <OutputClaims>
      <!-- 保留你原有的输出声明配置 -->
    </OutputClaims>
    <SubjectNamingInfo ClaimType="objectId" ExcludeAsClaim="true" />
    <Metadata>
      <!-- 配置SAML登出服务地址 -->
      <Item Key="LogoutServiceUrl">https://<你的B2C租户名>.b2clogin.com/<你的B2C租户名>.onmicrosoft.com/<你的注册登录策略ID>/samlp/logout</Item>
      <!-- 登出后重定向的页面 -->
      <Item Key="post_logout_redirect_uri">https://<你的重定向页面地址>.html</Item>
    </Metadata>
  </TechnicalProfile>
</RelyingParty>

3. 登出后空白页问题排查

  • 先检查post_logout_redirect_uri指定的HTML页面是否能正常访问,有没有跨域限制(比如B2C的域名是否被允许访问该页面)
  • 确认B2C应用注册的允许的重定向URI里已经添加了这个HTML页面的地址,没加的话B2C会拒绝跳转
  • 检查扩展策略中DefaultLogoutPageWithRedirectUri是否确实设为true,如果是false,B2C会停留在默认的空白登出页

4. 核心实现逻辑总结

  1. AEM触发登出请求到B2C的SAML登出端点
  2. B2C清除用户会话,根据配置自动跳转到post_logout_redirect_uri指定的页面
  3. 如果要实现“登出后留在AEM页面”,可以把post_logout_redirect_uri设为AEM的登出成功页面

内容的提问来源于stack exchange,提问作者AskMe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 01:57:37