【发布时间】:2015-01-09 14:41:51
【问题描述】:
我正在调查将 OpenID 连接用作我们的企业应用程序(面向消费者)的 SSO 协议。总的来说,它的大部分方面都符合我们的需求,除了它能够处理单次注销并希望对此提供一些指导。
我有机会查看latest OIDC session management spec,以及涉及类似主题的几个堆栈溢出问题:
正如 ping 的人所说,单次注销的处理方式与 SAML2 不同,因为它更以用户为中心。这一切都很好,但仍然感觉不适合实际单次注销的需求。具体来说,以用户为中心的处理(通过有点笨拙的 iframe 通信)仅适用于当前浏览器视图,但不适用于当前未查看的 RP。
例如,用户使用特定的 OP 登录到 RP A、B 和 C。单次注销只会触发浏览器正在查看的那些 RP 的注销;这将使其他会话挥之不去,这可能是一个安全问题。 (如果我对此分析有误,请更正)。
我看到了一些在协议之外工作的解决方案(例如父域 cookie,或者可能 (??) 相同的会话存储),但很遗憾,这些解决方案不符合我的需求。
我想看看我是否遗漏了有关 OIDC 规范的一些内容,该规范建议使用单一注销协议,涵盖类似于 SAML2 自己的单一注销的用例? (也许是一些直接的 OP-> RP 通信?甚至是客户端“通过 RP 迭代”注销?)。还是我真的要靠自己为它开发专有解决方案?
顺便说一句,我也很想知道 OIDC 委员会是否已经讨论过这个问题(我确定已经讨论过),以及它是否在要解决的路线图上。
提前感谢您的帮助!
【问题讨论】:
-
你有没有接触过特定的实现?
标签: oauth-2.0 single-sign-on logout openid-connect