如何实现跨域单点登录

Posted

技术标签:

【中文标题】如何实现跨域单点登录【英文标题】:How to achive the cross domain single sign-on 【发布时间】:2019-08-22 16:12:24 【问题描述】:

如何跨 3 个不同的域保持 cookie 和会话?

我正在为我们的 3 个具有不同域的产品设置集中式身份验证,例如 abc.com、xyz.com 和 def.com。所以我创建了一个像 login.abc.com 这样的登录服务器,我的中心化登录将在其中进行。因此,每当用户进入 abc.com 并登录 login.abc.com 时,他就可以访问所有 3 个产品,但挑战是当他打开第三个产品或第二个产品时,我该如何验证他的身份?因为它在不同的域中,并且相同的 cookie 在不同的域中不起作用。因此,如果您有任何想法可以克服这个问题,请分享您的想法。

如何存储 cookie 或 JWT 令牌,以便其他站点可以使用该 cookie/令牌与用户进行验证

注意:和 google 一样,如果您在 gmail 中登录,那么您会自动在 youtube 中登录,尽管它们具有不同的域。

我想要像谷歌这样的架构。

【问题讨论】:

【参考方案1】:

单点登录 (SSO) 是一种用户只需登录一次的用户体验。如果用户已经登录到一个应用程序,则用户会自动登录到其他应用程序。用户的身份验证会话由专用的集中式 SSO 服务维护。在您的示例中,abc.com 将记住用户登录状态,如果用户已登录到 abc.com,则每当用户尝试访问任何其他域中的应用程序时,用户都不会再次提示登录。

【讨论】:

以上是关于如何实现跨域单点登录的主要内容,如果未能解决你的问题,请参考以下文章

Cookie同域,跨域单点登录(转)

可跨域的单点登录(SSO)实现方案

如何设计一个单点登录系统?

单点登录之ajax跨域实现

单点登录,java实现

干货:单点登录实现方案