![如何在 ApacheDS 中配置 LDAP 以使用 uid 进行身份验证?](https://linux22.com/image/799984/%E5%A6%82%E4%BD%95%E5%9C%A8%20ApacheDS%20%E4%B8%AD%E9%85%8D%E7%BD%AE%20LDAP%20%E4%BB%A5%E4%BD%BF%E7%94%A8%20uid%20%E8%BF%9B%E8%A1%8C%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%EF%BC%9F.png)
dc=example,dc=com
在使用 Apache Directory Studio下添加新用户时,我有以下树结构:
dc=example,dc=com
|-- ou = engineering
|-- cn = Lawrence K.H Loh+o=IKEA+sn=Loh+uid=lawrence+displayName=Lawrence
下面是 的属性列表cn
。
- 对象类 = inetOrgPerson
- 对象类 = 组织人员
- 对象类别 = 人
- 对象类 = 顶部
- cn = Lawrence KH Loh
- sn=Loh
- 显示名称 = Lawrence
- o = 宜家
- uid = lawrence
- 用户密码 = SSHA 哈希密码
LDAP: error code 49 - INVALID_CREDENTIALS: Bind failed: Attempt to lookup non-existant entry
当我通过 连接此条目时出现此错误uid=lawrence,ou=engineering,dc=example,dc=com
。但是如果我使用 ,它工作正常cn=Lawrence K.H Loh+o=IKEA+sn=Loh+uid=lawrence+displayName=Lawrence,ou=engineering,dc=example,dc=com
。我可以知道如何切换到uid=lawrence
而不是长名称进行身份验证吗?
答案1
对于该特定对象,您不太可能做到这一点。LDAP 正在寻求您与专有名称(DN)的对象,本例中的主要属性是cn
。这是一个经过深思熟虑的设计决定,因为除了与 DN 关联的属性外,无法保证容器内对象的任何给定属性都是唯一的。
这不会阻止服务搜索您的目录并确定uid=lawrence
与特定 DN 相关联的内容(从而能够找到该对象所需的任何其他属性),但任何明确需要针对 DN 运行的调用只能针对主要属性运行。
这并不是说没有办法避免指定 DN。我想到的是实现 SASL 身份验证并定义 SASL ID 和 DN 之间的映射。但就您的问题而言,您不能切换到使用您正在验证的 DN 的非主要属性来代替 DN。