首页 > 解决方案 > omn​​iauth ldap 模块中的 ldap 过滤器在话语中不起作用

问题描述

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

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

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

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

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

感谢您的帮助和关注!

标签: authenticationactive-directoryldapomniauthdiscourse

解决方案


您确实需要“ldap dn”和“ldap 密码”。这些是用于对 LDAP 进行身份验证的凭据,因此您可以查找人们的帐户。通常,这是仅由您的应用程序使用的服务帐户。

过滤器应该看起来像这样:

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

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

userPrincipalName格式通常为username@domain.com. 它有时与电子邮件地址相同,但不一定如此。

我在该查询中输入的疯狂数字告诉 Active Directory 以递归方式搜索组。因此,这将允许您将组放入您的身份验证组,并且该新组的成员也将被授予访问您的应用程序的权限。否则,只有该组的直接成员才能访问。


推荐阅读