我试图让jenkins通过我们的活动目录组进行身份validation。
如果我插入用户,他们正确查找。 如果我插入组名称,则不会find它们。
编辑:通过试验和错误我已经发现,通过组的身份validation 确实工作 ,也就是说,一旦我将KS-Soft组添加到列表中,该组中的用户就可以login 。 但是 ,在input用户名和组名的列表中,Jenkins会尝试显示一个图标,确定它是用户还是组。 用户图标显示正确,但组图标始终是错误图标。
所以看起来jenkins可以通过组员身份validation用户身份,但是却无法validation目录中是否存在给定的组名string。 这在技术上甚至可能吗? (也许只是图标显示搞砸了。)
jenkins设置如下:(注意: mydomain和com用户名是不同的,其余的是确切的值)
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:
KS-Soft [email protected] ROLE_KS-Soft和[email protected]按照这个线程 请注意,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文件中。