Azure多租户应用无痕窗口点击全局登出时Front-channel logout URL未被调用
原因说明
- Chrome无痕模式自带独立会话隔离机制:每个无痕窗口的Cookie、本地存储等数据和普通Chrome窗口、其他无痕窗口完全隔离,互不共享。
- Azure AD Front-channel(前端通道)登出的触发逻辑完全依赖当前操作的浏览器会话中存储的Azure AD登录态Cookie:Azure AD会通过该Cookie匹配当前浏览器会话下该账号曾经授权过的所有应用,再依次向这些应用配置的前端通道登出地址发送GET请求。
你在普通窗口完成应用授权后,对应的授权关联记录只存在于普通窗口的Cookie存储中,无痕窗口中没有该关联记录。因此你在无痕窗口登录账号后点击全局登出,Azure AD仅能检索到当前无痕会话内产生的授权应用,无法匹配到你在普通窗口授权过的应用,自然不会发送对应的登出请求。
而普通Chrome的不同窗口之间共享Cookie存储,因此你在另一个普通窗口执行全局登出操作时,Azure AD可以读取到完整的授权应用列表,就能正常触发登出请求。
解决方案
如果需要实现跨浏览器会话、跨设备的全局登出通知能力,不要使用前端通道登出,改为配置Azure AD的Back-channel(后端通道)登出即可:后端通道登出是Azure AD直接从服务端向你的登出接口发送请求,完全不依赖用户的浏览器会话,不会受无痕模式、跨浏览器等场景的限制。
内容的提问来源于stack exchange,提问作者javac
相关产品推荐
相关产品推荐

