SSO停止工作 🤔

嘿,各位!

我正在 PHP 后端处理 SSO 认证。我首先向 SSO 地址(https://forum.latranchee.com/session/sso)发送一个 curl 请求,以获取 SSO Payload 和 SIG,然后构建自己的 Payload 来生成正确的重定向 URL。

接下来情况变得奇怪了……

如果我在浏览器中访问 https://forum.latranchee.com/session/sso,手动复制 SSO 和 SIG 并粘贴到脚本中,最终的重定向 URL 就能正常工作。

但如果通过 CURL 获取,最终重定向会显示错误信息,并且我的日志中会出现以下内容:

Verbose SSO log: Nonce has already expired

我完全摸不着头脑……这个问题似乎是突然出现的,现在我的用户无法登录了。

Discourse 是否更新了某些设置,以防止机器人频繁请求 /session/sso?

是的,nonce 现在已绑定到生成它的那个用户会话。您遇到的问题似乎与此相关:

预期做法不是发送 curl 请求,而是让待认证的用户访问 /session/sso,这可以通过点击网站的“登录”按钮,或由您的应用程序重定向到 /session/sso 来实现。当他们执行此操作时,Discourse 会将他们重定向回您的应用程序。此时负载中包含的 nonce 将是有效的。

1 个赞

这就是我为解决问题所采取的方法,但这破坏了我的异步登录流程。:disappointed_face: 我真的很喜欢那种做法。

我也尝试过通过 Axios 来实现。我本以为既然请求来自客户端,它应该能正常工作,但似乎也不行。

如果你能想到实现异步登录流程的方法,我非常欢迎任何建议!无论如何,感谢你的回复,非常感谢。

1 个赞