我使用JWT令牌在多个域上使用登录/注销/刷新开发了单点登录策略。 SSO通过postMessage iframe进行管理,如下所述:Single sign-on flow using JWT for cross domain authentication
我遇到的问题是用户在浏览器中禁用了第三方Cookie。
然后使用iframe的postMessage技术不再起作用了:
- 自上而下传递消息(在iframe中设置cookie)时,它失败
- 当自下而上传递消息(读取iframe中的cookie)时,它也会失败
因此,我必须为所有使用已停用的第三方Cookie的用户开发后备工作流程。
它的工作方式如下:
- 用户登录auth服务器
- 在auth服务器上设置cookie
- 用户被重定向回pageA,另一个cookie(具有相同的内容)在那里
- 用户访问pageB并希望登录
- 用户被重定向到auth服务器。 cookie被识别,用户被重定向回pageB,另一个cookie(再次使用相同的内容)isset
- 现在所有3个Cookie都“同步”
- 当用户在pageB上刷新其令牌时,问题就出现了。然后他无法在pageA上再次刷新它,他必须再次登录第A页
- 因为访问令牌的TTL很短,这是一种非常糟糕的体验
我的结论是:如果用户已禁用第三方Cookie,请删除整个SSO。用户只需登录每一页。
我是对的还是我缺少的东西?