使用 LDAP 配置 Jenkins:参数“Root DN”

使用 LDAP 配置 Jenkins:参数“Root DN”

我正在安装 LDAP 服务器并配置 Jenkins 以接受 LDAP 进行身份验证。在 Jenkins 参数中,参数 的行为很奇怪Root DN

文档说:

根 DN

为了验证用户并确定赋予该用户的角色,Jenkins 执行多个 LDAP 查询。

[...]

但在实践中,LDAP 服务器维护着数据的广泛索引,因此很少需要指定此字段— 您应该让 Jenkins 通过与 LDAP 对话来解决这个问题。

如果您指定了此值,该字段通常类似于 dc=acme,dc=org

奇怪的行为:如果我不指定该参数,则找不到我的用户。其他参数具有默认值。

LDAP 对我来说很新,所以我可能做错了什么。我使用 创建了一个 LDAP 树。我在自己创建的节点下slapd创建了一个用户。结果如下:adenoyellePeopleldapsearch

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其留空,我的用户将无法进行身份验证。但如果我为参数提供以下值,它就会起作用:

ou=people,dc=acme,dc=com

我做错了什么?我猜是我的 LDAP 节点错了,但我找不到原因。也许是objectClass值的问题?

答案1

如果省略此值,LDAP 客户端将向服务器查询用作基本 DN 的根 DSE。如果 slapd 设置不正确,ldapsearch 将无法获取该值,从而导致查询失败。

详情请见此处:OpenLDAP 未返回任何 Root 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 的匿名访问权限。

相关内容