【问题标题】:ldap filter in omniauth ldap module not working in discourseomn​​iauth ldap 模块中的 ldap 过滤器在话语中不起作用
【发布时间】:2019-04-23 19:20:27
【问题描述】:

我目前尝试将 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插件使用的):

  • ldap 已启用:true
  • ldap 主机名:我的 ldap 服务器的主机名
  • ldap 端口:389
  • ldap 方法:普通
  • ldap base:我的 ldap 服务器的基础
  • ldap uid: userPrincipalName
  • ldap 绑定 dn:无
  • ldap 密码:无
  • ldap 过滤器:(&(userPrincipalName=%{username})(memberOf=cn=[所需组的名称],ou=....,[base]))

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

  • (&(&(&(userPrincipalName=%{username})(memberOf=[组的dn])))))

我必须进行哪些配置才能只允许该特定组中的用户登录?

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

感谢您的帮助和关注!

【问题讨论】:

    标签: authentication active-directory ldap omniauth discourse


    【解决方案1】:

    您确实需要“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 以递归方式搜索组。因此,这将允许您将组放入您的身份验证组,并且该新组的成员也将被授予访问您的应用程序的权限。否则,只有该组的直接成员才能访问。

    【讨论】:

    • 就是这样,你只需要配置过滤器,绑定dn和密码...
    猜你喜欢
    • 2016-08-04
    • 2013-09-24
    • 1970-01-01
    • 2018-04-21
    • 1970-01-01
    • 1970-01-01
    • 2022-12-08
    • 2011-07-12
    • 2016-09-09
    相关资源
    最近更新 更多