Discourse Connect 流程

我们希望使用 discourse API 来构建一个社区。我们在流程中遇到一个问题。

我们的前端是一个 React 应用,后端基于 NodeJS,采用微服务架构。我们自己管理所有的认证流程。

根据我对 Discourse Connect 的理解,流程如下:

  1. 前端创建 payload,包含 nonce、用户信息,然后调用 example.com/session/SSO?sso=xx&sig=xx
  2. Discourse 然后回调 discourse_connect_url,我将在此验证 payload,然后返回重定向 URL,用户将被重定向到 discourse。

但是,当我使用用户信息创建 payload 时,我无法将这些信息从前端传播到 Discourse,然后再到后端。有人能帮我解决这个问题吗?或者我的理解是正确的吗?我在论坛上搜索了相关解决方案,但都没有成功。

请注意,当我从后端硬编码用户信息时,我能够成功登录用户到 discourse。

我希望我们的网站成为 discourse 的认证提供商,并将用户信息从前端传播到后端。有人能提供一些关于流程或 JavaScript 示例的帮助吗?

1 个赞

您好 Ankit,

流程实际上与您描述的相反。当您在网站上设置 Discourse Connect 时:

  1. 点击登录按钮将带您到 discourse_connect_url,并带有两个 get 参数 ssosig
  2. 用户将在 discourse_connect_url 上输入其凭据,并由您的网站进行身份验证。如果身份验证成功,则需要解码 sso 并按照 Discourse Connect 主题中所述的进一步步骤进行操作。

我遇到了类似的流程问题,我不希望用户访问 Discourse 并点击登录,我需要用户访问我的平台并点击“访问 Discourse”按钮,然后透明地访问 Discourse。

我的平台是否可以通过 API 以安全的方式为我的用户生成一个“nonce”,而无需他们事先访问 Discourse 并点击登录?

注意:我自己可以通过访问 Discourse 并为他们点击按钮来完成此操作,而他们对此一无所知,但这对于应用程序来说不安全。

最简单的选择是将“访问 Discourse”按钮链接到论坛上的 /login。