2016-10-27 2 views
0

LDAP 서버에 연결하려고합니다. 고객이 나에게 3 정보를 원하시면 다음 전송 : LDAP 서버의Perl을 사용한 LDAP 바인드 작업

  1. IP 주소
  2. 이름
  3. 비밀번호 나는 다음과 같은 코드를 사용하고

:

my $ldap = Net::LDAP->new ($ip_address) or die "[email protected]"; 

my $mesg = $ldap->bind ($username, 
         password => $password, 
           ) or die [email protected]; 

my $result = $ldap->search(
     base => $base, 
     filter => $filter 
     attrs => \@attributes, 
     ); 

die $result->error if $result->code; 

$에서 그 결과> 오류 값 :

'000004DC : LdapErr : DSID-0C090728, 주석 :이 작업을 수행하려면 연결에서 성공적인 바인드를 완료해야합니다.

메시지에 따르면 바인드가 성공적이지 않습니다. 그러나 성공하지 못하면 죽어야합니다. 암호를 변경하고 잘못된 값을 썼다가 다시 죽지 않았습니다.

'80090308 : LdapErr : DSID-0C0903C5, 코멘트 : AcceptSecurityContext를 오류

하지만 올바른 사용자 이름과 동일

나는 다음과 같은 메시지 바인드의 반환 값이 $의 중 mesg을 쏟아 보았다 및 암호도. 사용자 이름은 'itservice'입니다.

my $mesg = $ldap->bind ('itservice', 
         password => $password, 
         ) or die [email protected]; 

내가 다음과 같이 시도했지만 결과는 동일

my $mesg = $ldap->bind ('cn=itservice', 
          password => $password, 
          ) or die [email protected]; 

사용자 이름이나 암호를 사용하여 다른 형식이 있습니까 : 나는 다음과 같이 사용하고 있습니다?

+0

http://search.cpan.org/~marschap/perl-ldap/lib/Net/LDAP.pod#start_tls – xxfelixxx

+0

올바른 포트를 지정해야 할 수 있습니다. – xxfelixxx

+0

커맨드 라인에서'ldapsearch' 쿼리를 실행할 수 있습니까? – xxfelixxx

답변

0

LDAP 바인드 요청에는 사용자 이름뿐만 아니라 사용자에 대한 올바른 DN이 필요합니다. 일반적으로 응용 프로그램은 먼저 userName을 검색하여 사용자 DN을 검색 한 다음 사용자로 바인딩합니다.

+0

다음과 같이 터미널에서 연결하려고합니다. ldapsearch -h 호스트 -p 389 -x -D "cn = username"-w 암호 -s 기본 -b "DC = 사실, DC = 인트라, DC = tr" ldap_bind :하지만 다음을 참조하십시오 잘못된 자격 증명 (49) \t 추가 정보는 : 80,090,308는 : LdapErr : DSID-0C0903C5, 코멘트 : AcceptSecurityContext를 오류, 데이터 52E, v2580는 호스트, 사용자 이름과 암호는 고객은 말한다 옳은. 내 검색 명령이 잘못 되었습니까? –

+0

"cn = username"은 전체 DN이 아닙니다. 보다 적절한 값은 "cn = username, ou = people, dc = example, dc = com"이어야합니다. 이것은 LDAP와 완전히 호환되지 않는 MS AD와 상호 작용하고 있으며 추가 정보 문자열은 AD에 전적으로 관련된 세부 사항을 가지고 있다고 말했습니다. –