我正在安装LDAP服务器并configurationJenkins以接受LDAP进行身份validation。 在jenkins参数中,我有一个奇怪的行为与参数Root DN 。
文档说:
根DN
为了validation用户身份并确定给予用户的angular色,Jenkins执行多个LDAP查询。
- 将外部jenkinspipe道集成到openshift中
- 在Debian服务器上安装了Jenkins,无法连接任何端口
- Jenkins Active Directory需要更安全的身份validation方法
- Jenkins和HTTPS:无法连接到服务器
- 与Jenkins Docker Plugin和Jenkins Docker Slaves混淆
[…]
但实际上,LDAP服务器对数据保持了广泛的索引, 因此指定这个字段是很less需要的 – 您应该让Jenkins通过与LDAP交谈来解决这个问题。
如果你确实指定了这个值,这个字段通常看起来像dc = acme,dc = org
奇怪的行为 :如果我没有指定参数,我的用户没有find。 其他参数具有默认值。
LDAP对我来说是新的,所以我可能做错了什么。 我使用slapd创build了一个LDAP树。 我在一个节点下创build了一个用户adenoyelle 。 请参阅下面的ldapsearch结果:
root@myserver:~# ldapsearch -xLLL -b 'dc=acme,dc=com' dn: dc=acme,dc=com objectClass: top objectClass: dcObject objectClass: organization o: acme.com dc: acme dn: cn=admin,dc=acme,dc=com objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator dn: ou=people,dc=acme,dc=com cn: people objectClass: organizationalRole objectClass: top ou: people dn: uid=adenoyelle,ou=people,dc=acme,dc=com objectClass: account objectClass: top objectClass: simpleSecurityObject uid: adenoyelle
如果我让Root DN空,则我的用户无法进行身份validation。 但是,如果我给这个参数的值:
OU =人,DC = ACME,DC = COM
我究竟做错了什么? 我的猜测是我的LDAP节点是错误的,但我找不到原因。 也许与objectClass值的问题?
如果省略此值,则LDAP客户机将查询服务器以查找用作基本DN的根DSE。 如果slapd设置不正确,则ldapsearch无法获取该值,从而导致查询失败。
详情在这里: 没有从OpenLDAP返回的根DSE ,引用:
这实际上是作为bug #427842再次提交Ubuntu 9.10(karmic)。
要解决此问题,请将以下内容复制到fixRootDSE.ldif:
dn: olcDatabase={-1}frontend,cn=config changetype: modify add: olcAccess olcAccess: to dn.base="" by * read olcAccess: to dn.base="cn=subschema" by * read并执行
sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f fixRootDSE.ldif这应该给匿名访问根DSE。