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

Azure SSO无重定向退出?Cognito联合登录会话复用问题

联合Cognito与Azure AD的登录/登出问题解决方案

问题背景

我使用Amazon Cognito用户池,将Azure AD作为OIDC身份提供商做联合认证,采用Cognito托管UI和授权码流。应用通过重定向到以下地址启动登录:

https://<my-domain>.auth.<region>.amazoncognito.com/oauth2/authorize
  ?response_type=code
  &client_id=<client_id>
  &redirect_uri=<callback>
  &identity_provider=<MyAzureOIDCProvider>
  &prompt=login

核心问题

用户退出应用(已清理应用自身会话/Cookie)后,再次登录会静默复用之前的会话:Cognito直接返回首个登录用户的授权码,不会跳转至Azure让用户选择身份。在共享浏览器中,第二个用户无法用自己的账号登录,Cognito/Microsoft始终返回首个用户的身份,导致第二个用户被拦截。

已尝试无效操作

  • 在/oauth2/authorize请求中添加prompt=login或prompt=select_account参数 → 无效,Cognito复用自身托管UI会话,未跳转至Azure
  • 后端向Azure登出端点发起服务器端HTTP请求 → 无效,会话Cookie存储在用户浏览器的Microsoft域中,后端请求无法操作客户端Cookie

疑问1:是否只有浏览器重定向至Cognito /logout端点才能清除联合会话?有没有后端/非重定向方案?

是的,必须通过浏览器重定向才能清除联合会话,不存在后端非重定向方案。原因如下:

  • Cognito托管UI的会话Cookie存储在Cognito专属域名下,只有浏览器发起的请求才能访问并清除这些Cookie
  • Azure AD的会话Cookie存储在login.microsoftonline.com域名下,同样只能由用户浏览器操作,后端服务器无法跨域修改客户端Cookie

疑问2:如何正确链式清除Cognito会话与Azure/STS会话,确保下次登录强制选择账户?

正确的链式登出需要通过浏览器重定向分两步完成:

  1. 清除Cognito会话:引导用户浏览器重定向到Cognito登出端点:
    https://<my-domain>.auth.<region>.amazoncognito.com/logout?client_id=<client_id>&logout_uri=<post_logout_redirect_uri>
    
    该请求会清除Cognito托管UI的会话Cookie,同时自动重定向到Azure AD的登出端点。
  2. 清除Azure AD会话:Cognito会将用户重定向到Azure AD的登出端点,并携带post_logout_redirect_uri参数。完成Azure会话清除后,用户会被重定向回你指定的logout_uri地址。
    若要确保下次登录强制选择账户,后续发起登录请求时需满足疑问3中的条件,确保prompt=select_account参数被转发到Azure AD。

疑问3:prompt=login/prompt=select_account是否会从Cognito转发至OIDC身份提供商?什么条件下会转发?

这些参数会被Cognito转发至OIDC身份提供商,但需要满足以下条件:

  1. 登录请求中必须明确指定identity_provider=<MyAzureOIDCProvider>参数,告知Cognito直接使用Azure AD作为身份提供商,而非显示Cognito的身份选择界面
  2. Cognito自身没有有效会话:如果Cognito托管UI存在未过期的会话,它会直接复用该会话,不会将prompt参数转发给Azure AD
  3. Cognito用户池的OIDC身份提供商配置未禁用参数转发(默认允许)

之前添加prompt参数无效的核心原因,就是Cognito自身的托管UI会话未被清除,导致它直接复用会话,没有触发向Azure AD的跳转。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 01:28:11