我正在使用Zend Ldap为PHP应用程序构建身份验证系统。用户存储在Active Directory中。
这是ldap的一些配置:
'host' => 'ad-host',
'port' => '389',
'useStartTls' => false,
'accountDomainName' => 'SOMEDOMAIN.local',
'accountDomainNameShort' => 'SOMEDOMAIN',
'baseDn' => 'DC=somedomain,DC=local',
'accountCanonicalForm' => 3
现在,当我通过用户名(例如:testuser)和密码绑定时,用户名实际上用作:SOMEDOMAIN\testuser
我已成功通过身份验证,但当我更改accountDomainNameShort to SOMEDOMAIN.local
时,我收到Invalid Credentials
的错误。现在,我的一位朋友与我在不同的域中,但可以访问ad-host
。此用户可以在accountDomainNameShort is SOMEDOMAIN.local
时通过ldap进行身份验证,但是当他使用accountDomainNameShort as just SOMEDOMAIN
时,他无法连接到LDAP服务器并获得Ldap server Down
的例外。我认为他需要完全合格的名称,这个例外是可以接受的。
但问题是:当我通过同一个用户(testuser)登录我的Windows机器时,我可以使用SOMEDOMAIN.local\testuser
和SOMEDOMAIN\testuser
登录,但是当我通过Ldap登录时,我我无法使用SOMEDOMAIN.local\testuser
这样做。它真的让我觉得它为什么表现不同?窗口的AD认证是否与Ldap的认证不同?如果是这样,为什么ldap认证在我使用SOMEDOMAIN.local
时让我的朋友IN。我的accountDomainNameShort
应该是什么?