我读过几篇关于sso的文章,但在我的脑海里找不到答案。 我的情况如下:
情境:
问题:
如果用户尝试在 xyz 域中打开页面,系统如何理解用户之前登录过的内容?我的意思是 xyz 域无法访问具有jwt的 abc 的cookie。应将哪些信息发送到 xyz ,表明用户 X 正在尝试登录?
提前致谢
答案 0 :(得分:8)
您可以使用iframe将JWT身份验证令牌存储在连接到主页的中间域的cookie / localStorage中
方案
abc 向 masterdomain 发送凭据, masterdomain 对用户进行身份验证,然后创建已签名的jwt以便发送回abc。< / p>
abcmasterdomain 将此jwt保存在Cookie中。如果在同一台计算机上尝试登录 abc ,系统不会要求提供凭据并自动登录用户。
最后,当用户进入第二个域 xyz 时,使用iframe从 masterdomain 存储中恢复jwt,并自动登录用户
CORS 不是问题,因为 masterdomain.com 可以访问其存储空间,并且如果识别出来源和目的地,则允许iframe之间的通信(请参阅http://blog.teamtreehouse.com/cross-domain-messaging-with-postmessage )
为简化开发,我们最近在https://github.com/Aralink/ssojwt发布了一个开源项目跨域SSO与JWT