我正在开发一种解决方案,让用户无缝登录到我的所有应用程序,为此我们选择了 Casdoor。我尝试过 oAuth2,当我尝试登录我的第一个应用程序时,它就像一个魅力,但是当我尝试使用查询参数
?silentSignin=1
访问第二个应用程序时,它会生成一个隐藏的 Iframe 并尝试在后台进行身份验证。但我面临的问题是 Iframe 无法访问/检测我的 Casdoor 会话,因为 Casdoor 托管在另一个域上 https://casdoor.local
并且我的两个应用程序分别托管在不同的域上。 https://appone.local
和 https://apptwo.local
。
由于跨站点,它会阻止 cookie,当我检查网络选项卡并查看请求时,我可以看到被阻止的响应 cookie,并且由于默认情况下
SameSite=lax
,无法设置 Casdoor 会话 cookie,并且应该设置 cookie SameSite=None
。但 Casdoor 没有在响应标头中使用它,所以问题是如何让静默登录正常工作?
顺便说一句,我正在使用 casdoor-react-sdk 并使用 2 个 Casdoor React 示例实例:https://github.com/casdoor/casdoor-nodejs-react-example
如果您需要查看代码,可以通过检查此示例来实现,因为我正在使用相同的示例来测试静默登录。