我能够使用objectClassuserPrincipalName
的属性登录到 Active Directory user
; (例如[email protected]
)
我还设置了一个OpenLDAP
服务器实例,我可以仅有的使用 进行身份验证dn
,例如
"cn=somecn,cn=anothercn,ou=someou,dc=mydomain,dc=com"
如何OpenLDAP
使用另一个字段(例如mail
属性)进行身份验证inetOrgPerson
?
更,甚至如果这样的事情是可能的话,如何确保该领域的独特性? (我认为 AD 在该userPrincipalName
领域提供了该功能)
答案1
OpenLDAP 支持两种身份验证方法(simple
和SASL
),而SASL
是 ldap-utils 等的默认方法ldapsearch
。
当您使用 DN 进行身份验证时,您会执行所谓的“简单绑定”。
简单绑定
该simple
方法具有三种操作模式:
- 匿名的
- 未经验证的
- 用户/密码已验证
例如:
# ldapwhoami -x
anonymous
或者:
# ldapwhoami -x -D uid=rda,ou=people,dc=phys,dc=ethz,dc=ch -w secret1234
dn:uid=rda,ou=people,dc=phys,dc=ethz,dc=ch
SASL
OpenLDAP 客户端和服务器能够通过简单身份验证和安全层 (SASL) 框架进行身份验证,详细信息请参见RFC4422。 SASL 支持多种身份验证机制。 OpenLDAP 最常见的机制是EXTERNAL
和GSSAPI
。
这外部的机制利用由较低级别协议执行的身份验证:通常是 TLS 或 Unix IPC。例如,使用 Unix IPC 作为用户 root:
# ldapwhoami -Y EXTERNAL -H ldapi://
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
dn:gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
经过身份验证的用户被映射到树中的 DN cn=peercred,cn=external,cn=auth
。
这GSAPI机制通常指 Kerveros 5。如果您部署了 Kerberos 5 基础设施,则可以使用 Kerberos 主体进行身份验证。
首先针对 KDC 进行身份验证并获取 TGT:
# kinit rda
Password for [email protected]: secret1234
然后您可以使用 GSSAPI 针对 OpenLDAP 进行身份验证:
# ldapwhoami
SASL/GSSAPI authentication started
SASL username: [email protected]
SASL SSF: 56
SASL data security layer installed.
dn:uid=rda,cn=gssapi,cn=auth
主体[email protected]
映射到树中的 DN cn=gssapi,cn=auth
。
现在,您可以使用正则表达式将经过身份验证的 DN 映射到数据库中的实际 DN,配置olcAuthzRegexp
如下cn=config
:
dn: cn=config
objectClass: olcGlobal
cn: config
olcAuthzRegexp: {0}uid=([^,/]*),cn=phys.ethz.ch,cn=gssapi,cn=auth uid=$1,ou=people,dc=phys,dc=ethz,dc=ch
...
此olcAuthzRegexp
行将领域中的任何用户主体映射PHYS.ETHZ.CH
到相应posixAccount
条目ou=people,dc=phys,dc=ethz,dc=ch
,该条目下的属性具有相同的用户名uid
。
例如,使用以下 posix 条目
# ldapsearch uid=rda
dn: uid=rda,ou=people,dc=phys,dc=ethz,dc=ch
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: krbPrincipalAux
objectClass: krbTicketPolicyAux
uid: rda
krbPrincipalName: [email protected]
...
ldapwhoami
将会呈现:
# ldapwhoami
SASL/GSSAPI authentication started
SASL username: [email protected]
SASL SSF: 56
SASL data security layer installed.
dn:uid=rda,ou=people,dc=phys,dc=ethz,dc=ch
使用的映射olcAuthzRegexp
必须与 DIT 中的唯一条目匹配。这是由管理员或管理软件来确保的。