版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明。
本文的LDAP基于微软的活动目录(Active Directory)。
LDAP可以用来作为一个用户管理工具。由于是第三方用户管理工具,因此可以跨应用管理同一个用户组。通过Group和Organizational Unit管理用户的权限和分组。
不同于一般的用户管理系统,采用用户名/密码的认证方式。LDAP采用的是Object/密码的方式。用户的所有属性构成了Object。那么在采用LDAP作为认证方式时,应用程序该如何完成认证呢?
答案是采用Filter,例如指定(|(name={FILTER}))作为search filter。这样可以使用用户的name属性作为登录名。其实采用name作为Object的识别名不是很合理,虽然在一个OU(Organizational Unit)中,Object的name是不能相同的,但是在一个AD server里,可能存在多个OU,不同的OU中是允许使用相同的name。因此,为了避免混淆,应该使用sAMAccountName或者userPrincipalName作为LDAP中User的唯一标识。至于采用哪个,个人觉得sAMAccountName更为精简一些,且是创建AD server中User的必填项。
再来说一说User中的属性,distinguishedName。这是一个由多个关键字组成的,由逗号分隔的属性。这个属性对于每个User来说也是唯一的,通过其中的关键字,可以定位到User。在某些场合,其可以用作User的唯一标识,用来登录。例如在用LDAP Browser来连接LDAP server时,如果要输入Admin的用户名密码作为连接用户,可以输入Admin用户的distinguishedName