使用 Casdoor 无法使用静默登录功能

问题描述 投票:0回答:1

我正在开发一种解决方案,让用户无缝登录到我的所有应用程序,为此我们选择了 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

如果您需要查看代码,可以通过检查此示例来实现,因为我正在使用相同的示例来测试静默登录。

reactjs node.js oauth-2.0 oauth
1个回答
0
投票

这里的问题不是跨站的。 Casdoor只使用自己的域名,不需要访问应用程序的域名。

问题是您需要在 Casdoor 的应用程序编辑页面中打开两个选项。

  1. Signin session
    表示当有人通过 OAuth 登录时 Casdoor 会记住 cookie。
  2. Auto signin
    表示Casdoor在发现上述cookie存在时会自动登录并重定向。

设置完这些后,隐藏的 iframe 可以默默地完成登录过程并通知您的应用程序。然后您的应用程序会自行刷新并显示登录状态,如帐户个人资料头像。

© www.soinside.com 2019 - 2024. All rights reserved.