简单绑定

简单绑定

我能够使用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 支持两种身份验证方法(simpleSASL),而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 最常见的机制是EXTERNALGSSAPI

外部的机制利用由较低级别协议执行的身份验证:通常是 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 中的唯一条目匹配。这是由管理员或管理软件来确保的。

相关内容