我们希望使用 discourse API 来构建一个社区。我们在流程中遇到一个问题。
我们的前端是一个 React 应用,后端基于 NodeJS,采用微服务架构。我们自己管理所有的认证流程。
根据我对 Discourse Connect 的理解,流程如下:
- 前端创建 payload,包含 nonce、用户信息,然后调用 example.com/session/SSO?sso=xx&sig=xx
- Discourse 然后回调 discourse_connect_url,我将在此验证 payload,然后返回重定向 URL,用户将被重定向到 discourse。
但是,当我使用用户信息创建 payload 时,我无法将这些信息从前端传播到 Discourse,然后再到后端。有人能帮我解决这个问题吗?或者我的理解是正确的吗?我在论坛上搜索了相关解决方案,但都没有成功。
请注意,当我从后端硬编码用户信息时,我能够成功登录用户到 discourse。
我希望我们的网站成为 discourse 的认证提供商,并将用户信息从前端传播到后端。有人能提供一些关于流程或 JavaScript 示例的帮助吗?
1 个赞
fzngagan
(Faizaan Gagan)
3
您好 Ankit,
流程实际上与您描述的相反。当您在网站上设置 Discourse Connect 时:
- 点击登录按钮将带您到
discourse_connect_url,并带有两个 get 参数 sso 和 sig。
- 用户将在
discourse_connect_url 上输入其凭据,并由您的网站进行身份验证。如果身份验证成功,则需要解码 sso 并按照 Discourse Connect 主题中所述的进一步步骤进行操作。
我遇到了类似的流程问题,我不希望用户访问 Discourse 并点击登录,我需要用户访问我的平台并点击“访问 Discourse”按钮,然后透明地访问 Discourse。
我的平台是否可以通过 API 以安全的方式为我的用户生成一个“nonce”,而无需他们事先访问 Discourse 并点击登录?
注意:我自己可以通过访问 Discourse 并为他们点击按钮来完成此操作,而他们对此一无所知,但这对于应用程序来说不安全。
最简单的选择是将“访问 Discourse”按钮链接到论坛上的 /login。