我正在调查将OpenID Connect作为我们企业应用程序(面向消费者)的SSO协议的使用情况。总体而言,它的大部分方面都符合我们的需求,但它处理单点注销的能力令人担忧,希望能得到一些指导。
我已经有机会查看了最新的OIDC会话管理规范,以及几个与类似主题相关的Stack Overflow问题:
正如Ping公司的人所提到的,单点注销与SAML2不同,更加以用户为中心。这很好,但仍然感觉不符合实际单点注销的需求。具体来说,通过有些笨拙的iframe通信进行的用户中心处理只适用于当前浏览器视图,但不适用于当前未被查看的RP。例如,用户使用特定OP登录RPs A、B和C。单点注销只会触发浏览器正在查看的那些RPs的注销;这将使得其他会话继续存在,可能会带来安全问题。(如果我分析错误,请纠正我。)
我已经看到一些在协议之外工作的解决方案(例如父域cookie,或者可能是相同的会话存储),但不幸的是它们不符合我的需求。
我正在尝试看看OIDC规范是否遗漏了某些内容,建议包括类似于SAML2自身单点注销的用例的单点注销协议?(也许是一些直接的OP->RP通信?甚至是客户端的“迭代通过RP”注销?)。还是我真的要自己开发专有解决方案?
顺便问一下,这个问题是否在OIDC委员会中讨论过(我相信已经讨论过),以及是否在路线图上得到了解决。
提前感谢您的帮助!