我能够使用objectClass的userPrincipalName属性登录到 Active Directory user;(例如foo@mydomain.com)
我还设置了一个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方法具有三种操作模式:
例如:
# ldapwhoami -x
anonymous
Run Code Online (Sandbox Code Playgroud)
或者:
# 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
Run Code Online (Sandbox Code Playgroud)
OpenLDAP 客户端和服务器能够通过简单身份验证和安全层 (SASL) 框架进行身份验证,详细信息在RFC4422 中。SASL 支持多种身份验证机制。OpenLDAP 最常见的机制是EXTERNAL和GSSAPI。
的EXTERNAL机制使得使用由低层协议执行的认证的:通常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
Run Code Online (Sandbox Code Playgroud)
经过身份验证的用户被映射到树中的一个 DN cn=peercred,cn=external,cn=auth。
该GSSAPI机制通常意味着Kerveros 5.如果你有一个Kerberos 5的基础设施部署,您可以使用Kerberos主体进行身份验证。
首先对 KDC 进行身份验证并获得 TGT:
# kinit rda
Password for rda@PHYS.ETHZ.CH: secret1234
Run Code Online (Sandbox Code Playgroud)
然后您可以使用 GSSAPI 对 OpenLDAP 进行身份验证:
# ldapwhoami
SASL/GSSAPI authentication started
SASL username: rda@PHYS.ETHZ.CH
SASL SSF: 56
SASL data security layer installed.
dn:uid=rda,cn=gssapi,cn=auth
Run Code Online (Sandbox Code Playgroud)
主体rda@PHYS.ETHZ.CH映射到树中的 DN cn=gssapi,cn=auth。
现在,您可以使用具有以下olcAuthzRegexp配置的正则表达式将该经过身份验证的 DN 映射到数据库中的实际 DN 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
...
Run Code Online (Sandbox Code Playgroud)
此olcAuthzRegexp行将领域中的任何用户主体映射到属性中具有相同用户名PHYS.ETHZ.CH的相应posixAccount条目。ou=people,dc=phys,dc=ethz,dc=chuid
例如使用以下 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: rda@PHYS.ETHZ.CH
...
Run Code Online (Sandbox Code Playgroud)
ldapwhoami 将会呈现:
# ldapwhoami
SASL/GSSAPI authentication started
SASL username: rda@PHYS.ETHZ.CH
SASL SSF: 56
SASL data security layer installed.
dn:uid=rda,ou=people,dc=phys,dc=ethz,dc=ch
Run Code Online (Sandbox Code Playgroud)
使用的映射olcAuthzRegexp必须与 DIT 中的唯一条目匹配。这将由管理员或管理软件来确保。
| 归档时间: |
|
| 查看次数: |
813 次 |
| 最近记录: |