omn​​iauth ldap 模块中的 ldap 过滤器在话语中不起作用

ldap filter in omniauth ldap module not working in discourse

我目前尝试将 Discourse 配置为仅允许特定 ldap 组中的用户登录。Discourse 有一个名为 discourse-ldap auth 的插件(https://github.com/jonmbake/discourse-ldap-auth ). This plugin uses the omniauth ldap module: https://github.com/omniauth/omniauth-ldap

我的discourse插件配置(该配置实际上是discourse插件对omniauth ldap模块使用的):

使用此配置时,任何人都无法登录论坛。当我使用绑定 dn 和密码时,每个人都可以登录。 我也试过这个过滤器但没有成功(从我的 ldap 服务器过滤器复制):

我必须配置什么才能只允许该特定组中的用户登录?

我没有在日志中发现任何错误或指示符。请帮忙!

感谢您的帮助和关注!

您确实需要 "ldap dn" 和 "ldap password"。这些是用于向 LDAP 进行身份验证的凭据,因此您可以查找人们的帐户。通常,这是一个仅供您的应用程序使用的服务帐户。

过滤器可能看起来像这样:

(&(sAMAccountName=%{username})(memberOf:1.2.840.113556.1.4.1941:=[dn of the group]))

用户通常会使用 sAMAccountName 登录,通常称为 "username"。每当您看到 DOMAIN\username 格式的帐户时,username 就是 sAMAccountName.

userPrincipalName通常是username@domain.com的格式。它有时与电子邮件地址相同,但并非必须如此。

我在该查询中输入的疯狂数字告诉 Active Directory 在组中递归搜索。这样一来,您就可以将组放入您的身份验证组中,并且该新组的成员也可以访问您的应用程序。否则,只有该组的直接成员才能访问。