我能够使用objectClass的userPrincipalName
属性登录到 Active Directory;user
(例如[email protected]
)
我还设置了一个OpenLDAP
服务器实例,我只能使用它进行身份验证dn
,例如
"cn=somecn,cn=anothercn,ou=someou,dc=mydomain,dc=com"
如何OpenLDAP
使用另一个字段进行身份验证,例如例如的mail
属性inetOrgPerson
?
更何况,就算有这种可能,又怎么能保证这个领域的唯一性呢?(我假设 AD 在该userPrincipalName
领域提供的功能)
OpenLDAP 支持两种身份验证方法(
simple
和SASL
),同时SASL
是 ldap-utils 之类的默认方法ldapsearch
。当您使用 DN 进行身份验证时,您会执行所谓的“简单绑定”。
简单绑定
该
simple
方法具有三种操作模式:例如:
或者:
SASL
OpenLDAP 客户端和服务器能够通过简单身份验证和安全层 (SASL) 框架进行身份验证,详细信息请参见RFC4422。SASL 支持多种身份验证机制。OpenLDAP 最常见的机制是
EXTERNAL
和GSSAPI
。EXTERNAL机制使用由较低级别协议执行的身份验证:通常是 TLS 或 Unix IPC 。例如使用 Unix IPC 作为 root 用户:
经过身份验证的用户被映射到树中的一个 DN
cn=peercred,cn=external,cn=auth
。GSSAPI机制通常意味着 Kerveros 5。如果您部署了 Kerberos 5 基础架构,则可以使用 Kerberos Principals 进行身份验证。
首先针对 KDC 进行身份验证并获取 TGT:
然后您可以使用 GSSAPI 对 OpenLDAP 进行身份验证:
主体
[email protected]
映射到树中的 DNcn=gssapi,cn=auth
。现在,您可以使用正则表达式将经过身份验证的 DN 映射到数据库中的实际 DN,
olcAuthzRegexp
配置cn=config
如下:此
olcAuthzRegexp
行将领域中的任何用户主体映射PHYS.ETHZ.CH
到相应的posixAccount
条目,该条目下的属性ou=people,dc=phys,dc=ethz,dc=ch
中具有相同的用户名。uid
例如,使用以下 posix 条目
ldapwhoami
将会呈现:使用的映射
olcAuthzRegexp
必须匹配 DIT 中的唯一条目。这要由管理员或管理软件来保证。