2011-11-30 204 views
2

我正在尝试使用PHP对使用LDAP的用户进行身份验证。我有我检查过的用户的DN是正确的。我也有密码。这是用户使用SamAccountName进行身份验证时的正确密码。PHP ldap_bind()验证 - 错误无法绑定到服务器:凭据无效?

我希望这是在使用DN进行身份验证时使用的密码。 LDAP没有特定名称的特定密码吗?以下是我使用PHP的ldap_bind()函数进行身份验证的代码。我是否正确?

$ldaphost="ldap://somehost.com:3268"; 
$dn = "cn=LastName\, FirstName Dept/Country/ext,OU=Accounts,OU=Location,ou=Division,"; 
$basedn="dc=abc,dc=enterprise"; 

if (!($connect = ldap_connect($ldaphost))) {  
    die ("Could not connect to LDAP server"); 
} 

$ldapbind = ldap_bind($connect, "$dn" . "$basedn", $password); 

if ($ldapbind) { 
    echo "LDAP bind successful..."; 
} else { 
    echo "LDAP bind failed..."; 
} 

结果我从上面的代码得到的是:

警告:的ldap_bind()[function.ldap绑定]:无法绑定到服务器: 无效凭证LDAP绑定失败.. 。

从行,其中ldap_bind()调用时:

$ldapbind = ldap_bind($connect, "$dn" . "$basedn", $password); 

无效凭证让我相信DN或密码可能存在错误。我已经三重检查了DN,并且据我所知,没有错误。

任何想法?

回答

7

我想你是连接到一个Microsoft域,你可以尝试域的语法,然后凭据。对于User015在DOMAIN - 域\ user015

+0

宾果!这样可行!那么您在ldap_bind()中使用的用户ID取决于ldap服务器的域的类型?或者服务器的管理员是否可以改变它?因此,在某些使用DN的ldap域中,在其他使用DOMAIN \ user的域上。其他潜在用户ID是电子邮件地址? – user840930

+0

@ user840930 DOMAIN \ user只能在Microsoft域控制器上使用,LDAP默认是要求(我可能在这里是错误的)完整的DN,我觉得很有趣,因为这只在LDAP中可用。 –

+0

@Stephan B请问我可以在哪里更改此域\用户?你能帮我吗? –

相关问题