添加SCIM支持作为服务提供商

如先前在此处所述,我认为如果 Discourse 支持 SCIM 协议,那将是一个很好的功能。SCIM 是 IETF 通过 RFC7644 和 RFC7643 提出的标准,旨在通过简单的 Rest API 提供用户/组管理解决方案。我们的用例是通过一个充当 SCIM 客户端的独立服务(在我们的例子中是 Keycloak)来管理用户身份和组的成员资格。Discourse 将充当 SCIM 服务提供商。除了任何现有的 SSO 和集中式帐户创建之外,还将具有以下优点:

  • 将用户分配到组;
  • 在多个应用程序中立即更改用户信息;
  • 在用户从 SSO 中删除时删除用户;
  • 以标准方式获取用户或组列表;

我们通过 NLNet 从 NGI 获得了一些用于 SCIM 实现的资金,您可以在我们的论坛此处阅读提案和相关工作。我目前会尝试在 Discourse 插件中实现第一个解决方案,但最终将其集成到 Discourse 核心中会很好。请告知任何想法和意见!

5 个赞

他们的规范使用 /Users/Groups 而不是 .well-known/scim/Users 之类的名称,这似乎很奇怪。这几乎肯定会与许多应用程序中现有的路由发生冲突。

如果您还有一些预算,我很乐意在这方面提供帮助。

我可以想象,如果它写得好并且被广泛使用(或被几家企业客户要求),它可能会成为一个官方插件。

我不认为它会成为核心的一部分——即使是 Oauth2 也是一个插件。

4 个赞

我认为可以使用任何路径作为 SCIM 端点的前缀,例如 api/scim/v2/Users 或您建议的常用路径。

是的,我理解对核心的担忧,所以也许一个目标是它成为一个官方插件。也感谢您提供的帮助,目前没有额外的预算,但让我们看看未来如何发展。

1 个赞

啊。这说得通。我猜想情况就是这样,但在我快速浏览时没有看到。我会参考其他身份验证插件。

以下是名称中带有“auth”的官方插件:

discourse-apple-auth/                  discourse-microsoft-auth/
discourse-authentication-validations/  discourse-oauth2-basic/
discourse-auth-no-email/               discourse-vk-auth/
discourse-development-auth/            discourse-wikimedia-auth/

听起来是个有趣的项目。

1 个赞

插件的第一个版本现已在此处提供:

映射仍然非常简单,只有用户和组的基本字段才能正常工作。我使用 keycloak SCIM 插件进行了测试,您已经可以在 Keycloak 中添加/修改用户,这些用户随后将在 Discourse 中创建/更新。keycloak SCIM 插件在此处:

非常欢迎任何反馈 :slight_smile: 我们将在我们的环境中进一步测试 keycloak,并且我仍然想用 authentik 进行测试。

4 个赞

这很酷,是个好主意。期待测试。谢谢!

如果你能把它作为一个主题发布到 Plugin 分类下就更好了 :slight_smile:

1 个赞

在“插件”类别中,“发帖”按钮对我来说是禁用的,并且我看到“不允许在此类别发帖”的消息。

加入 @plugin_authors 群组。这样您就可以在该类别中创建主题。

好的,我已收到您的请求 :slight_smile:

1 个赞

……并最终发布:SCIM Plugin

2 个赞