嵌入在 iframe 中的 Auth0 在 Chrome 上不起作用,但在 Firefox 上起作用(可能是 cookie 问题?)

Auth0 embedded in iframe doesn't wok on Chrome but works on Firefox (Possible cookie issue?)

我在 Https 服务器上部署了我的网站,并在 chrome 上打开了网站。一切正常。我使用 nextJs、passportjs、passport-auth0 和 experssJs 来处理前端的身份验证。我还使用 auth0 提供的经典登录体验。我在我的 experssJs 服务器中设置了 sameSite =“none” 和 secure= true,因此符合 chrome 的预期。我是 运行 Chrome 的第 92 版。

然后我将网站嵌入到 iFrame 中。该网站正确显示,我转到 /login 一切正常,但是当登录成功并且 /callback 被调用时,它进入无限循环并给我太多重定向错误。我知道这一定是回调无法准确读取 cookie 或 cookie 被 Chrome 忽略的问题,因为在 firefox(90 (64-bit)) 中一切正常。

关于如何解决浏览器兼容性问题的任何帮助?

有几个问题导致 iframe 无法加载。

  1. 跨域 cookie
  2. Secure=True 标志在个别 cookie 集上丢失

跨域 Cookie: auth0 免费计划的工作方式是它们为您提供用户导航到的端点。然后此端点进行身份验证并 returns 返回您的网站,并在响应中为您提供一些标识。 默认情况下,Auth0 提供的端点与您的网站没有相同的域名,并且要拥有自定义域名,您必须升级到 Auth0 的付费版本。由于 Auth0 登录域和网站域不同,因此令牌未正确存储,并且一直处于无限循环中。

个别 cookie 集上缺少 Secure=True 标志: 我做的另一件事是当我存储从 Auth0 返回的令牌时,我会在存储 cookie 时明确设置 samesite=none 和 secure=true 标志。

以上两者结合解决了我的问题。