我们使用Apache 2.2对Active Directory进行身份validation。 configuration如下:
AuthFormLDAPURL "ldap://*.*.*.*:389/DC=domain,DC=com?userPrincipalName,sAMAccountName?sub?(objectClass=*)"
注意:以下使用WireShark的所有跟踪。
当CN等于sAMAcountMame名称时,我定义了用户john:
我只能使用john(sAMAcountMame)进行身份validation。 请在下面findLDAP绑定请求:
LDAP绑定响应:
然后,当CN不等于sAMAcountMame名称时,我定义了用户johnd:
不幸的是,我无法使用johnd(sAMAcountMame)进行身份validation。 请在下面findLDAP绑定请求:
LDAP绑定响应:
我可以使用全名[email protected]进行身份validation。 请在下面findLDAP绑定请求:
LDAP绑定响应:
问题:
谢谢你的帮助!
执行LDAP简单绑定时,AD不会尝试将传递的名称与不带任何后缀的sAMAccountName
属性进行匹配。 但是,它可以尝试find一个与displayName
匹配的内容,在第一个testing中(这看起来像是与sAMAccountName
匹配,因为这些属性的值是相同的)它在你的工作。
在处理LDAP简单绑定时使用的名称匹配规则的精确描述可以在Microsoft文档中find: http : //msdn.microsoft.com/zh-cn/library/cc223499.aspx
使用UPN可能更可靠,因为displayName
可能包含一些人类可读的string(例如,一个人的全名),并不保证是唯一的。 DOMAIN \ USERNAME表单也应该是唯一的,但是依赖于NetBIOS域名,现在被认为是过时的。