20.8. 检查无密码访问的帐户可用性

大多数时间,目录服务器返回关于用户帐户的身份验证信息,客户端以该用户身份实际绑定(或尝试绑定)。绑定尝试需要某种形式的用户凭证,通常是密码或证书。虽然目录服务器允许未经身份验证的绑定和匿名绑定,但这些绑定都不会返回任何用户帐户信息。
在某些情况下,客户端需要有关用户帐户的信息 - 特别是是否应该允许帐户进行身份验证 - 为了执行其他操作,但客户端没有或对目录服务器中的用户帐户使用任何凭证。基本上,客户端需要执行一个凭据的、没有验证的绑定操作来检索用户帐户信息(包括密码过期信息(如果帐户有密码)。
这可以通过通过 Account Usability Extension Control 来通过 ldapsearch 来完成。此控制的工作方式如同为给定用户执行经过身份验证的绑定操作,并返回该用户的帐户状态,但不实际绑定到服务器。这允许客户端确定该帐户是否可用于登录,然后将该帐户信息传递给另一个应用,如 PAM。
例如,使用 Account Usability Extension Control 可以允许系统将 Directory 服务器用作其身份后端来存储用户数据,但使用免密码身份验证方法,如智能卡或 SSH 密钥,其中身份验证操作是在目录服务器之外执行。

20.8.2. 更改用户可以执行帐户的搜索功能

默认情况下,只有目录管理器可以使用 Account Usability Extension Control。其他用户可以通过在支持的控制条目上设置适当的 ACI 来使用 Account Usability Extension Control。控制条目为帐户 Usability Extension Control OID, 1.3.6.1.4.1.42.2.27.9.5.8 命名。
例如,要启用 cn=Administrators,ou=groups,dc=example,dc=com 组的成员读取所有用户的帐户 Usability Extension 控制:
# ldapmodify -D "cn=Directory Manager" -W -x

dn: oid=1.3.6.1.4.1.42.2.27.9.5.8,cn=features,cn=config
changetype: modify
add: aci
aci: (targetattr = "*")(version 3.0; acl "Account Usable"; allow (read)(groupdn = "ldap:///cn=Administrators,ou=groups,dc=example,dc=com");)