# 自托管 Discourse 上的 SAML 插件

**URL:** https://meta.discourse.org/t/saml-plugin-on-self-hosted-discourse/158544
**Category:** Support
**Created:** [2020年七月22日 20:56 UTC](https://meta.discourse.org/t/saml-plugin-on-self-hosted-discourse/158544 "2020-07-22T20:56:20Z")
**Posts on this page:** 11
**Page:** 1

<div class="post-metadata">

### Author: ![dfuentes](https://avatars.discourse-cdn.com/v4/letter/d/54ee81/32.png) [@dfuentes](https://meta.discourse.org/u/dfuentes)
#### Post date: [2020年七月22日 20:56 UTC](https://meta.discourse.org/t/saml-plugin-on-self-hosted-discourse/158544/1 "2020-07-22T20:56:20Z")

</div>

SAML 身份验证插件页面 [在此处](https://www.discourse.org/plugins/saml.html) 指出：_“SAML 身份验证仅在企业托管计划中提供。”_

这是否意味着我无法在自行托管的免费版 Discourse 上使用 SAML 身份验证？理想情况下，我希望在我的 Discourse 实例上使用 Azure AD 身份验证。

---

<div class="post-metadata">

### Author: ![maiki](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/maiki/32/233950_2.png) [@maiki](https://meta.discourse.org/u/maiki)
#### Post date: [2020年七月22日 21:00 UTC](https://meta.discourse.org/t/saml-plugin-on-self-hosted-discourse/158544/2 "2020-07-22T21:00:18Z")

</div>

您可以使用它。该插件可在 [GitHub - discourse/discourse-saml: Support for SAML in Discourse · GitHub](https://github.com/discourse/discourse-saml) 获取。

---

<div class="post-metadata">

### Author: ![jomaxro](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jomaxro/32/126216_2.png) [@jomaxro](https://meta.discourse.org/u/jomaxro)
#### Post date: [2020年七月22日 21:03 UTC](https://meta.discourse.org/t/saml-plugin-on-self-hosted-discourse/158544/3 "2020-07-22T21:03:17Z")

</div>

该消息与我们托管服务相关。这意味着您无法在我们的标准版或企业版上使用 SAML 插件。

不过，对于 Azure AD，您其实并不需要 SAML。请参阅 [Discourse OpenID Connect (OIDC)](https://meta.discourse.org/t/openid-connect-authentication-plugin/103632) 以获取更简单的设置方案。文末附有针对 Azure AD 的说明。

---

<div class="post-metadata">

### Author: ![dfuentes](https://avatars.discourse-cdn.com/v4/letter/d/54ee81/32.png) [@dfuentes](https://meta.discourse.org/u/dfuentes)
#### Post date: [2020年七月22日 21:05 UTC](https://meta.discourse.org/t/saml-plugin-on-self-hosted-discourse/158544/4 "2020-07-22T21:05:56Z")

</div>

那么，插件目录中列出的所有插件都可以在我自行托管的免费 Discourse 实例上使用吗？

---

<div class="post-metadata">

### Author: ![jomaxro](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jomaxro/32/126216_2.png) [@jomaxro](https://meta.discourse.org/u/jomaxro)
#### Post date: [2020年七月22日 21:09 UTC](https://meta.discourse.org/t/saml-plugin-on-self-hosted-discourse/158544/5 "2020-07-22T21:09:42Z")

</div>

> [@dfuentes](#):
>
> 插件目录中列出的所有插件都可以用于我自托管的免费 Discourse 实例吗？

当然可以！而且实际上可用的 #official 插件比网站上列出的要多得多。别忘了也查看一下 #customization:theme-component。

---

<div class="post-metadata">

### Author: ![dfuentes](https://avatars.discourse-cdn.com/v4/letter/d/54ee81/32.png) [@dfuentes](https://meta.discourse.org/u/dfuentes)
#### Post date: [2020年七月22日 21:18 UTC](https://meta.discourse.org/t/saml-plugin-on-self-hosted-discourse/158544/6 "2020-07-22T21:18:03Z")

</div>

再次感谢您提供的补充信息。

因此，目标是让内部用户使用 Azure AD 进行身份验证/注册，而外部用户可以通过本地账户或其他账户注册插件进行注册。这也是我首先想到 SAML 的原因。

我能否限制 OpenID Connect 身份验证插件仅用于 Azure AD，并仅允许内部用户使用？

---

<div class="post-metadata">

### Author: ![jomaxro](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jomaxro/32/126216_2.png) [@jomaxro](https://meta.discourse.org/u/jomaxro)
#### Post date: [2020年七月22日 21:23 UTC](https://meta.discourse.org/t/saml-plugin-on-self-hosted-discourse/158544/7 "2020-07-22T21:23:51Z")

</div>

OpenID Connect 和 SAML 都属于“身份验证提供商”。通过在您的网站上配置其中一个，用户默认将能够在本地登录或身份验证提供商之间进行选择。Meta 就是一个很好的例子，您可以选择本地登录、Facebook、Google、GitHub 等。

在您的情况下，用户可以在本地登录和 OpenID 之间，或者本地登录和 SAML 之间进行选择。您可以根据自身需求选择更易于配置的方案。

> [@dfuentes](#):
>
> 仅限内部用户使用

使用任一插件均可实现此功能，因为谁可以登录将由 Azure AD 控制，而非您用于连接 Azure 的插件。

---

<div class="post-metadata">

### Author: ![dfuentes](https://avatars.discourse-cdn.com/v4/letter/d/54ee81/32.png) [@dfuentes](https://meta.discourse.org/u/dfuentes)
#### Post date: [2020年七月22日 21:36 UTC](https://meta.discourse.org/t/saml-plugin-on-self-hosted-discourse/158544/8 "2020-07-22T21:36:42Z")

</div>

[quote=“jomaxro, 第 7 楼，主题：158544”]  
使用任一插件均可实现此功能，因为登录权限由 Azure AD 管理，而非用于连接 Azure 的插件。[/quote]

不过，能否将其对外部用户隐藏呢？我不希望我们的客户尝试并误以为他们可以使用 Azure AD 登录。

是否可以为内部用户单独设立一个登录/注册页面（仅内部用户知晓），且该页面仅提供 Azure AD 认证作为唯一选项？

---

<div class="post-metadata">

### Author: ![jomaxro](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jomaxro/32/126216_2.png) [@jomaxro](https://meta.discourse.org/u/jomaxro)
#### Post date: [2020年七月23日 12:33 UTC](https://meta.discourse.org/t/saml-plugin-on-self-hosted-discourse/158544/9 "2020-07-23T12:33:56Z")

</div>

你可以通过 CSS 隐藏登录链接，这样用户就看不到它了。然后，你可以分享（或发布在内部门户网站上）一个直接链接，供内部用户使用 OpenID 或 SAML 登录。由于用户在访问登录页面时并未登录，因此无法判断他们是否为内部用户。

你也可以更改按钮标签，以避免混淆。例如，在下图中，我们将按钮标记为“内部用户”——“Discourse 工作人员”。如果不是 Discourse 工作人员尝试使用，那也无妨：

 ![image](https://global.discourse-cdn.com/meta/original/3X/1/2/12d92ec1dbb48cfa64a0775141a1885ce9a03792.png)

---

<div class="post-metadata">

### Author: ![dfuentes](https://avatars.discourse-cdn.com/v4/letter/d/54ee81/32.png) [@dfuentes](https://meta.discourse.org/u/dfuentes)
#### Post date: [2020年七月23日 13:18 UTC](https://meta.discourse.org/t/saml-plugin-on-self-hosted-discourse/158544/10 "2020-07-23T13:18:02Z")

</div>

Joshua，我真心感谢你的及时且富有信息的帮助。非常感谢，祝一切平安！

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [2020年八月22日 13:18 UTC](https://meta.discourse.org/t/saml-plugin-on-self-hosted-discourse/158544/11 "2020-08-22T13:18:03Z")

</div>

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