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

Keycloak执行登出后无法同步登出Azure Active Directory用户问题咨询

Keycloak 集成 Azure AD 单点登出异常解决方案

问题本质是仅调用Keycloak登出接口仅清除了Keycloak侧的用户会话,未同步触发上游Azure AD的联邦登出流程,Azure AD侧仍保留有效用户会话,因此用户二次登录时会直接被Azure AD免密认证通过。

可用后端实现方案

  • 方案1:启用Keycloak原生联邦登出能力(无额外代码开发,推荐)
    Keycloak原生支持上游身份提供商的同步登出,只需做如下配置即可:
    1. 登录Keycloak管理控制台,进入对应realm,依次点击「身份提供商」- 你配置的Azure AD实例
    2. 在配置页找到「单点登出服务URL」项,填入Azure AD登出端点:https://login.microsoftonline.com/<你的Azure AD租户ID>/oauth2/v2.0/logout,若使用Azure政府版则替换为https://login.microsoftonline.us/<你的Azure AD租户ID>/oauth2/v2.0/logout
    3. 开启「启用单点登出」开关后保存配置
      配置完成后,你原有的后端调用Keycloak登出API https://keycloaktest:8443/auth/realms/<realmName>/protocol/openid-connect/logout 的逻辑无需修改,Keycloak会自动同步调用Azure AD的登出接口,清除Azure AD侧的用户会话。
  • 方案2:后端主动调用Azure AD登出接口
    如果你需要自己控制登出流程,可在调用Keycloak登出接口后,额外新增调用Azure AD登出接口的逻辑:
    1. 从用户信息中获取对应的Azure AD租户ID、用户唯一标识
    2. 第一种方式:调用Azure AD公开登出端点 https://login.microsoftonline.com/<Azure AD租户ID>/oauth2/v2.0/logout,可可选携带post_logout_redirect_uri参数指定登出后跳转地址
    3. 第二种方式(完全后端静默登出,无需浏览器参与):调用Microsoft Graph的revokeSignInSessions接口,直接作废指定用户的所有Azure AD登录会话,该方案需要你的后端服务预先申请User.ReadWrite.All或Directory.ReadWrite.All的Graph API应用权限。

注意:如果你的场景使用Azure AD政府版,所有涉及login.microsoftonline.com的地址都需要替换为login.microsoftonline.us。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:06:05