我在使用 uid 进行身份验证时遇到了麻烦,我认为这是对用户进行身份验证的标准方法。因此,基本上,我的用户在 ldap 中添加如下:
# jsmith, Users, example.com
dn: uid=jsmith,ou=Users,dc=example,dc=com
uidNumber: 10003
loginShell: /bin/bash
sn: Smith
mail: [email protected]
homeDirectory: /home/jsmith
displayName: John Smith
givenName: John
uid: jsmith
gecos: John Smith
gidNumber: 10000
cn: John Smith
title: System Administrator
但是当我尝试使用典型的 Web 应用程序或服务进行身份验证时,如下所示:
jsmith
password
我得到:
ldapsearch -x -h ldap.example.com -D "cn=jsmith,ou=Users,dc=example,dc=com" -W -b "dc=example,dc=com"
Enter LDAP Password:
ldap_bind: Invalid credentials (49)
但如果我使用:
ldapsearch -x -h ldap.example.com -D "uid=jsmith,ou=Users,dc=example,dc=com" -W -b "dc=example,dc=com"
有用。
但是...大多数 Web 应用程序和身份验证方法似乎使用另一种方法。因此,在我使用的 Web 应用程序上,除非我将用户指定为:uid=smith,ou=users,dc=example,dc=com
否则什么都不起作用。
在 webapp 中我只需要用户在用户字段中输入:jsmith。
请记住,我的 ldap 使用“新”cn=config
方法来存储设置。因此,如果有人有我遗漏的 ldif,请提供。
如果您需要更多信息,请告诉我。这是 Ubuntu 12.04 上的 OpenLDAP。
答案1
ldapsearch
示例中的工具使用简单 BIND 来更改连接的授权状态。简单 BIND 操作需要专有名称和凭证。专有名称是uid=jsmith,ou=Users,dc=example,dc=com
,不在cn=jsmith,ou=Users,dc=example,dc=com
示例中给出的条目中。
invalid credentials
此目录服务器配置会导致服务器在实际不存在可分辨名称时返回结果代码cn=jsmith,ou=Users,dc=example,dc=com
。这是推荐的配置:它向攻击者提供的信息较少。