配置 OneLogin 的 SAML 以用于 Discourse

以下是配置 Discourse 以支持使用 OneLogin 的 SAML 进行登录和注册的步骤。

配置 OneLogin

创建 OneLogin 账户

访问 OneLogin 并创建一个账户。

创建新应用:SAML Test Connector (IdP w/attr)

从您的仪表板创建新应用。

搜索 SAML Test Connector (IdP w/attr)

配置应用

假设我们的 Discourse 实例 URL 为 http://discourse.example.com。现在进行配置。

切换到 Configuration 选项卡并填写以下详细信息:

  • Audience: http://discourse.example.com
  • Recipient: http://discourse.example.com/auth/saml/callback
  • ACS (Consumer) URL Validator: ^http:\\/\\/discourse\\.example\\.com\\/auth\\/saml\\/callback\\/$
  • ACS (Consumer) URL: http://discourse.example.com/auth/saml/callback

复制证书信息和 SAML 2.0 端点

切换到 SSO 选项卡。

点击证书下方的 View Details 链接,复制 SHA fingerprintX.509 Certificate。请记下这些信息,稍后在配置 Discourse 应用时会用到。

复制并记下 SAML 2.0 Endpoint (HTTP) URL。

配置 Discourse

安装 discourse-saml 插件

按照 此指南 安装 discourse-saml 插件

配置 discourse-saml 插件

该插件可以通过两种方式配置:

选项 1:站点设置(推荐)

安装并重建后,进入 Discourse 管理面板,导航至 Admin → Plugins → SAML。启用 saml_enabled 设置并配置以下内容:

  • saml_target_url: 从 OneLogin SSO 选项卡复制的 SAML 2.0 Endpoint URL
  • saml_cert_fingerprint: 从 OneLogin SSO 选项卡 → 证书部分复制的 SHA fingerprint
  • saml_cert: 从 OneLogin SSO 选项卡 → 证书部分复制的 X.509 Certificate
  • saml_log_auth: 启用以进行调试

选项 2:环境变量

或者,您可以通过 app.yml 中的环境变量配置插件。请注意,当使用环境变量时,所有 SAML 站点设置将在管理 UI 中隐藏。

编辑 app.yml

cd /var/discourse
vim containers/app.yml

并在 env 部分添加以下变量:

DISCOURSE_SAML_TITLE: "Example SAML"
DISCOURSE_SAML_TARGET_URL: {SAML 2.0 Endpoint URL}
DISCOURSE_SAML_LOG_AUTH: "true"
DISCOURSE_SAML_CERT_FINGERPRINT: {SHA fingerprint}
DISCOURSE_SAML_CERT: {X.509 Certificate without line breaks}
  • 将 {SAML 2.0 Endpoint URL} 替换为从 OneLogin SSO 选项卡复制的 SAML 2.0 Endpoint URL
  • 将 {SHA fingerprint} 替换为从 OneLogin SSO 选项卡 → 证书部分复制的 SHA fingerprint
  • 将 {X.509 Certificate without line breaks} 替换为从 OneLogin SSO 选项卡 → 证书部分复制的 X.509 Certificate,请注意必须没有换行符,并移除开始和结束标记

重建应用

为使更改生效,请重建应用

cd /var/discourse
./launcher rebuild app

完成!:tada:

现在您应该能够使用 OneLogin 的 SAML 进行登录。

6 个赞