我已经设置了一个具有以下结构的 OpenLDAP 服务器:
dn: dc=test-project,dc=com objectclass: top objectclass: dcObject objectclass: organization
dn: cn=admin,dc=test-project,dc=com
description: LDAP administrator
objectclass: simpleSecurityObject
objectclass: organizationalRole
ou=applications,dc=test-project,dc=com
dn: ou=applications,dc=test-project,dc=com
objectclass: organizationalUnit
objectclass: top
ou: applications
uid=devopstools,ou=applications,dc=test-project,dc=com
dn: uid=devopstools,ou=applications,dc=test-project,dc=com
objectclass: account
objectclass: simpleSecurityObject
objectclass: top
uid: devopstools
ou=groups,dc=test-project,dc=com
dn: ou=groups,dc=test-project,dc=com
objectclass: organizationalUnit
objectclass: top
ou: groups
cn=administrators,ou=groups,dc=test-project,dc=com
dn: cn=administrators,ou=groups,dc=test-project,dc=com
gidnumber: 500
objectclass: posixGroup
objectclass: top
cn=users,ou=groups,dc=test-project,dc=com
dn: cn=users,ou=groups,dc=test-project,dc=com
gidnumber: 501
objectclass: posixGroup
objectclass: top
ou=users,dc=test-project,dc=com
dn: ou=users,dc=test-project,dc=com
objectclass: organizationalUnit
objectclass: top
ou: users
cn=test,ou=users,dc=test-project,dc=com
dn: cn=test,ou=users,dc=test-project,dc=com
cn: test
gidnumber: 500
givenname: Test
homedirectory: /home/users/test
mail: [email protected]
objectclass: inetOrgPerson
objectclass: posixAccount
objectclass: top
sn: test
uid: test
uidnumber: 1002
我将其配置为与 gogs 配合使用,一切似乎都运行良好。因此,我使用以下参数为 Jenkins 配置 LDAP 插件:
server: openldap.test.svc.cluster.local
root DN: dc=test-project,dc=com
User search filter: cn={0}
Group membership:gidnumber
Manager DN:cn=admin,dc=test-project,dc=com
password:xxxx
现在,当我使用“admin”用户或“devopstools”用户测试 LDAP 连接时,我获得用户查找和身份验证成功,而当我使用“test”用户时,我仅获得用户查找成功和身份验证失败!所有密码都存储在 SSHA 哈希中。我该怎么办?
答案1
为了解决这个问题,我通过以下方式修改了 OpenLDAP 上的 ACL:
olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by dn="cn=admin, dc=test-project,dc=com" write by anonymous auth by * none
olcAccess: {1}to * by self read by dn="uid=devopstools,ou=applications, dc=test-project,dc=com" read by dn="cn=admin,dc=test-project,dc=com" write by * no
答案2
我遇到了同样的问题,但还没能解决。你有解决方案了吗?
我发现唯一可行的解决方法是授予测试帐户读取权限,但这不是一个好方法。唯一需要能够读取 LDAP 树的帐户是配置为 ManagerDN 的管理员帐户。