Jenkins / Hudson – LDAP组*查找*不起作用

我试图让jenkins通过我们的活动目录进行身份validation。

如果我插入用户,他们正确查找。 如果我插入组名称,则不会find它们。


编辑:通过试验和错误我已经发现,通过组的身份validation 确实工作 ,也就是说,一旦我将KS-Soft组添加到列表中,该组中的用户就可以login但是 ,在input用户名和组名的列表中,Jenkins会尝试显示一个图标,确定它是用户还是组。 用户图标显示正确,但组图标始终是错误图标。

所以看起来jenkins可以通过组员身份validation用户身份,但是却无法validation目录中是否存在给定的组名string。 这在技术上甚至可能吗? (也许只是图标显示搞砸了。)


jenkins设置如下:(注意: mydomaincom用户名是不同的,其余的是确切的值)

 Server : ldap://ks-dc01.mydomain.com:389 root DN : dc=mydomain,dc=com User Search Base : ou=KSUser User Search Filter : userPrincipalName={0} Group search base : ou=KSGroups Manager DN : CN=Placeholder Martin,OU=Benutzer,OU=KSUser,DC=mydomain,DC=com Manager Password : ***** 

通过这个设置,我将用户[email protected]input到列表中,Jenkins然后可以查找这个用户并且我可以login。

不过,我不能让jenkins解决组名。 我使用AD Explorer确认我的组实际上低于OU=KSGroups

我在这里有一个组在AD Explorer中显示为CN=KS-Soft ,它有一个member属性,列出所有我感兴趣的用户(用户[email protected]被列为CN=Placeholder Martin,OU=Benutzer,OU=KSUser,DC=mydomain,DC=com在这个属性。

我已经尝试过这些string:

请注意,Jenkins帮助在Group search base上有以下说明:

Jenkins在LDAP上进行的其中一项search是find用户的组列表。

此字段确定要运行的查询以标识包含组的组织单位。 查询几乎总是“ou = groups”,所以先试试,尽pipe这个字段可以留空以从根DNsearch。

如果login尝试导致“pipe理限制超出”或类似的错误,请尝试使您的LDAP结构尽可能具体,以减less查询的范围。 如果错误仍然存​​在,您可能需要编辑WEB-INF/security/LDAPBindSecurityRealm.groovy中包含的WEB-INF/security/LDAPBindSecurityRealm.groovy文件。 将行更改为: groupSearchFilter = "(| (member={0}) (uniqueMember={0}) (memberUid={1}))"; 仅查询您的LDAP中用于组成员身份的字段,例如: groupSearchFilter = "(member={0})"; 然后重新启动Jenkins并重试login。

我已经尝试在这个文件中的两个值,都没有工作。

今天早上我刚刚发现,jenkins对AD组名来说是个案例敏感。
只是补充说,作为一个答案,如果有人在沮丧地拔出他/她的头发。
这是完全不明显的,因为AD组名通常不区分大小写。

今天与Jenkins 2有同样的问题。LDAPconfiguration工作,我可以作为AD用户login,我可以将AD用户添加到matrix,但是当我将一个组添加到matrix,它显示该组“用户/组未find” 。

最后在https://wiki.jenkins-ci.org/display/JENKINS/LDAP+Plugin#LDAPPlugin-Groupsearchbase

解决方法是将(& (cn={0}) (objectclass=group) )为组searchfilter。

默认情况下,Jenkins使用(& (cn={0}) (| (objectclass=groupOfNames) (objectclass=groupOfUniqueNames) (objectclass=posixGroup)))

我们的AD组只有

 objectClass: top objectClass: group 

尝试使您的groupSearchBase完全限定,即“ou = KSGroups,dc = mydomain,dc = com”。 此外,组名几乎肯定不会以“@ mydomain.com”结尾(除非您故意以这种方式命名)。

我build议使用openldap工具中的“ldapsearch”或Windows的类似命令行工具来尝试groupSearchFilter的变体,直到find一个能够提供所需结果的文件,然后将其导入到.groovy文件中。