我正在尝试使用相当大的 Active Directory 实例来通过 Jenkins 对用户进行身份验证。
使用以下设置可达到很好的效果:
<server>ldaps://dc.example.net:636</server>
<rootDN>OU=EMEA,DC=global,DC=example,DC=net</rootDN>
<inhibitInferRootDN>false</inhibitInferRootDN>
<userSearchBase>OU=Users</userSearchBase>
<userSearch>(&(c=DE)(|(company~=examplea)(company~=exampleb))(&(objectClass=User)(objectClass=Person)(sAMAccountName={0})))</userSearch>
<groupSearchFilter>(& (cn={0}) (objectclass=group) )</groupSearchFilter>
<groupMembershipStrategy class="jenkins.security.plugins.ldap.FromUserRecordLDAPGroupMembershipStrategy"/>
<managerDN>CN=sysauth,OU=EMEA,DC=global,DC=example,DC=net</managerDN>
<managerPasswordSecret>not-the-password</managerPasswordSecret>
<disableMailAddressResolver>false</disableMailAddressResolver>
<extraEnvVars class="linked-hash-map">
<entry>
<string>com.sun.jndi.ldap.connect.timeout</string>
<string>5000000</string>
</entry>
<entry>
<string>com.sun.jndi.ldap.read.timeout</string>
<string>5000000</string>
</entry>
</extraEnvVars>
<displayNameAttributeName>displayname</displayNameAttributeName>
<mailAddressAttributeName>mail</mailAddressAttributeName>
<userIdStrategy class="jenkins.model.IdStrategy$CaseInsensitive"/>
<groupIdStrategy class="jenkins.model.IdStrategy$CaseInsensitive"/>
请注意,这仅在rootDN
包含时才有效OU=EMEA
,如工作代码片段中所示。一旦rootDN
更改为DC=global,DC=example,DC=net
身份验证就会失败。
userSearchBase
奇怪的是,如果它OU=Users,OU=EMEA
应该等于有效的设置,它也会失败。
因为有需要访问位于某处的团体OU=not-EMEA,DC=global,DC=example,DC=net
,所以rootDN
必须如此DC=global,DC=example,DC=net
。
我尝试了以下方法:
- 增加
com.sun.jndi.ldap.connect.timeout
-com.sun.jndi.ldap.read.timeout
> 的值5000
将为“正常” - 玩弄空
rootDN