如何在 ApacheDS 中配置 LDAP 以使用 uid 进行身份验证?

如何在 ApacheDS 中配置 LDAP 以使用 uid 进行身份验证?

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

  1. 对象类 = inetOrgPerson
  2. 对象类 = 组织人员
  3. 对象类别 = 人
  4. 对象类 = 顶部
  5. cn = Lawrence KH Loh
  6. sn=Loh
  7. 显示名称 = Lawrence
  8. o = 宜家
  9. uid = lawrence
  10. 用户密码 = 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。

相关内容