在开发环境中实现SSO时需要帮助

我在本地计算机上设置了 Discourse,并希望设置 SSO 登录。当用户点击登录时,我可以重定向用户,但在重定向回来时,我一直收到错误。我启用了日志记录,它显示:
Nonce is incorrect, was generated in a different browser session, or has expired
以下是我正在使用的 Python 文件:Discourse-setup/main.py at main · kamleshjoshi8102/Discourse-setup · GitHub

另外请注意,在我的情况下,它运行在端口 4201 上,所以我已将登录重定向到端口 4201。

触发此错误的方法如下:

  def nonce_valid?
    if SiteSetting.discourse_connect_csrf_protection
      nonce && @secure_session[nonce_key].present?
    else
      nonce && Discourse.cache.read(nonce_key).present?
    end
  end

它会检查 nonce 是否由 Discourse 为与将用户重定向回 Discourse 的会话相同的会话生成。
您可以尝试将 discourse_connect_csrf_protection 站点设置设置为 false。其默认值为 true。这是一个隐藏的站点设置,因此只能从 Rails 控制台禁用。

启用时,discourse_connect_csrf_protection 设置可确保整个 SSO 身份验证过程都通过浏览器重定向进行。如果您通过向 session/sso 发出后台请求来启动身份验证过程,则需要禁用它。更多详情请参见:DiscourseConnect flow no longer functions - #5 by david

1 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.