背景
我有一个超级简单的 openldap 服务器,除了管理员用户、几个 OU 和一个用户之外,基本上什么都没有。
我可以使用管理员用户登录并进行身份验证,cn=admin,dc=example,dc=com
但我添加的任何用户都无法绑定到它进行身份验证。
最初我尝试对它进行身份验证以使用 OpenVPN,我在那里得到的日志是Incorrect password supplied for LDAP DN "uid=myuser,ou=users,dc=example,dc=com"
但是我知道密码是正确的,这让我陷入了现在的困境......
该服务器正在使用cn=config
配置,而不是使用配置文件!
slapcat -b cn=config
以下是从输出中摘录的(我认为相关的内容) :
正如您所看到的,我一直在盲目地添加olcAccess
条目来尝试解决。
dn: olcDatabase={1}mdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDatabase: {1}mdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=example,dc=com
olcAccess: {0} to * by * auth
olcAccess: {1} to * by anonymous auth
olcAccess: {2}to * by self auth
olcAccess: {3}to * by * read
olcAccess: {4}to attrs=userPassword,shadowLastChange by self write by anonymous auth by * none
olcAccess: {5}to dn.base="" by * read
olcLastMod: TRUE
olcRootDN: cn=admin,dc=example,dc=com
olcRootPW:: <<hidden>>
olcDbCheckpoint: 512 30
olcDbIndex: objectClass eq
olcDbIndex: cn,uid eq
olcDbIndex: uidNumber,gidNumber eq
olcDbIndex: member,memberUid eq
olcDbMaxSize: 1073741824
structuralObjectClass: olcMdbConfig
entryUUID: 03eab422-8c94-1038-90ce-9fb3bcaac9c4
creatorsName: cn=admin,cn=config
createTimestamp: 20181205044311Z
entryCSN: 20181206111241.430739Z#000000#000#000000
modifiersName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
modifyTimestamp: 20181206111241Z
我有olcAccess: {0} to * by * auth
TOP 条目 {0} - 据我所知这应该允许任何人/任何事物进行身份验证,对吗??
我正在使用 Apache Directory Studio 来帮助与服务器交互,这是验证密码的屏幕截图:
从用户角度而言,一切都运行正常cn=admin,dc=example,dc=com
。
我试图做的只是添加一些基本用户,如下所示:uid=myuser,ou=users,dc=example,dc=com
并允许他们在目录中进行身份验证。我真的不需要任何特殊的东西,例如角色等,所有用户都将处于同一级别并分成组,外部服务将通过这些组进行筛选以对其进行身份验证。
我添加的这些用户是“posixAccount”对象类。
任何信息都值得感激,我发现许多其他 SE 帖子和旧论坛帖子也有类似的问题,但我发现的所有内容都只是说明要添加olcAccess
我做错或对我来说不起作用的内容。
我尝试在输入olcAccess
内容后重新启动服务器,因此请将其从列表中勾掉。
答案1
因此 ACL 只是一个转移注意力的幌子。
显然,LDAP 关心如何散列用户密码,管理员帐户有 SSHA。我创建的新用户在密码上使用 SHA512 散列。一旦我使用 SSHA 散列重置用户密码,绑定就开始起作用了。呃。
我会做一些阅读,但如果有人知道如何将我的用户转换为使用 SHA512 或 SSHA-512 哈希,我将不胜感激。现在我将保持原样。
olcAccess: {0}to * by * read
另外,对于其他任何面临类似 ACL 问题的人。我现在只需将其作为唯一规则应用即可olcAccess
,而且似乎没问题。