2016-11-15 4 views
0

코드 Perl 스크립트를 작성하고 싶습니다. 샘플 사용자 세부 정보 및 AD 서버 세부 정보를 제공했습니다. 아래 제공된 변수를 사용하여 LDAP 사용자를 인증 할 수 없습니다. Net :: LDAP 라이브러리를 사용하고 있지만 아직 내 목표를 달성 할 수 없습니다. LDAP 사용자를 인증하는 데 필요한 LDAP 인증 프로세스와 논리를 이해하는 데 도움이 필요합니다. 내가 가진Perl에서 LDAP 인증을 수행하는 방법

한 의심의 여지가 "내가 LDAP의 사용자가 존재 여부 AD 서버 또는 여부를 확인해야합니까?"입니다

USER:cn=Feroz,dc=Alam,dc=com 
PWD:nike 
HOST:10.10.10.10 
PORT:1234 
AD_USER:CN=Feroz,OU=Service,OU=Accounts,DC=Alam,DC=com 
AD_PWD:addidas 
AD_SERVER:myadserver.com 
$ldap = Net::LDAP->new($HOST, port=>$PORT) or die "Cant Connect to LDAP server:[email protected]"; 
#IF I REMOVE THE PORT NO i AM GETTING THE ERROR "Cant Connect to LDAP server:IO::Socket::INET: connect:" 
if ($ldap->bind($USER,password=>$PWD)) { 
    print "Successful Authentication\n"; 
    #IT IS GIVING ME SUCCESSFUL AUTHENTICATION MESSAGE EVEN IF ENTER THE WRONG PASSWORD 
} 
else{ 
    print "Unsuccessful Authentication\n"; 
    push(@downlist, $server); 
    --$upcount; 
} 
$ldap->unbind(); 

DEBUG LOGS: 
Net::LDAP=HASH(0x488268) sending: 
Net::LDAP=HASH(0x488268) received: 
0000 12: SEQUENCE { 
0002 1: INTEGER = 1 
0005 7: [APPLICATION 1] { 
0007 1:  ENUM = 49 
000A 0:  STRING = '' 
000C 0:  STRING = '' 
000E  : } 
000E  : } 
Successful Authentication 
Net::LDAP=HASH(0x488268) sending: 

도와주세요 ......

+2

는 또한 인터넷 : : LDAP를 사용하고 인증 할 때 무슨 일이 일어나고 있는지 설명했다 방법을 보여주십시오. 뭔가가 진행되고 있어야합니다. 당신이 한 일을 보지 않고는 디버그하는 것이 불가능합니다. – simbabque

+0

는 여기에 내가 LDAP 인증을 $의 LDAP = 순 :: 개의 LDAP> 새 ($ 호스트 포트 => $ PORT)를 수행하거나 "LDAP 서버에 캔트 연결을한다 : $ @"을 죽을 사용하고있는 코드입니다; if ($ ldap-> bind ($ USER, password => $ PWD)) { # 성공한 인증 \t \t "성공적인 인증 \ n"; 다른 } \t { \t \t 인쇄 "실패한 인증 \ 없음"; \t \t 푸시 (@downlist, $ 서버); \t \t - $ upcount; \t} $ 개의 LDAP> 바인딩을 해제(); –

+0

질문을 편집하십시오. 이것은 포럼이 아니며 주석은 코드를위한 것이 아닙니다. 읽을 수 없습니다. – simbabque

답변

0

순 : 내가 모르는 경우 코드 오류가있는 경우를 제외하고 바인드 방법을 (사용하는 경우 LDAP 메시지 개체를 반환, 그것은 undef 또는 0 또는 croak을 반환 할 수 있음). 어쨌든 인증 성공 여부에 관계없이 항상 귀하의 상태가 유지된다는 것을 의미합니다.

나는 당신이 그와 같은 결합의 결과를 저장하고 코드를 테스트 할 필요가 있다고 생각 :

my $mesg = $ldap->bind($USER,password=>$PWD); 

if ($mesg and $mesg->code() == 0) { 
    print "Successful Authentication\n"; 
} 
else{ 
    print "Unsuccessful Authentication\n"; 
    print 'Received error '.$mesg->code().': '$mesg->error()."\n"; 
} 
+0

감사합니다. 이 문제가 해결되었습니다. 이것이 올바른 해결책입니다. –

+0

예! 나는 도움이된다! :-디 –