2011-11-30 1 views
2

PHP를 사용하여 LDAP를 사용하여 사용자를 인증하려고합니다. 내가 옳은지 확인한 사용자의 DN이 있습니다. 암호가 있습니다. 사용자가 SamAccountName으로 인증 할 때 올바른 비밀번호입니다.PHP ldap_bind() authentication - error 서버에 바인드 할 수 없습니다 : 유효하지 않은 자격증 명입니까?

이 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 도메인에 연결 한 것 같습니다. 그런 다음 자격 증명에 대한 도메인 구문을 사용해보십시오. DOMAIN에서 User015 위해 - 지금까지 LDAP를 다룰 때 도메인 \ user015

+0

빙고를 찾을 수 있습니다! 그게 효과가있어! 따라서 ldap_bind()에서 사용하는 사용자 ID는 LDAP 서버의 도메인 유형에 따라 다릅니다. 아니면 서버의 관리자가 변경할 수 있습니까? 따라서 일부 LDAP 도메인에서는 DN을 사용하고 다른 도메인에서는 DOMAIN \ user를 사용합니다. 그리고 잠재적으로 userid는 전자 메일 주소입니까? – user840930

+0

@ user840930 DOMAIN \ 사용자는 Microsoft 도메인 컨트롤러에서만 허용됩니다. LDAP 기본값은 LDAP에서만 사용할 수 있으므로 재미있는 것으로 보이는 전체 DN을 필요로합니다. –

+0

@Stephan B이 DOMAIN \ 사용자를 어디에서 변경할 수 있는지 알려주실 수 있습니까? 나 좀 도와 줄 수있어? –

관련 문제