我正在尝试将LDAP身份验证设置为RT3站点的Active Directory服务器。
我认为LDAP身份验证模块中存在错误,但我真的不明白过滤器正在尝试做什么。见RT/Authen/ExternalAuth/LDAP.pm
line 126:
$ldap_msg = $ldap->search( base => $group,
filter => $filter,
attrs => \@attrs,
scope => 'base');
有一个配置文件指定group
,group_attr
和group_attr_value
。
组作为$group
传递,过滤器是从group_attr=group
字符串创建的。在我的情况下,group_attr = present
和memberOf
行返回CN=ITAdmins,CN=Builtin,DC=SPGLOBAL,DC=local
,过滤器变为Filter: (present=CN=ITAdmins,CN=Builtin,DC=SPGLOBAL,DC=local)
和Attrs: dn
。
对于过滤器来说这是无效的,但任何对此有所了解的人都可以看到发生了什么意思吗?
答案 0 :(得分:1)
感谢您发布代码链接,这使得理解起来更加简单。
因此,模型是,用用户名和密码进行验证,然后是$ group,如果已定义,则表示检查它们是否为组的成员以允许它们进入。
$ group应该是完整的LDAP DN,因此cn = AccessGroup,ou = Groups,dc = myDomain,dc = com等。
$ group_attr_val应该是member,memberOf或者Member,具体取决于目标LDAP目录中的成员属性。
所以我认为你的问题是group-attr = present可能是错误的,应该像成员一样简单。