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

触发此错误的方法如下:

  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 个赞