2016-11-15 9 views
0

Я хочу написать Проверка подлинности LDAP код для моего Perl script.Below Я предоставил образцы данных USER и данные сервера AD. Я не могу аутентифицировать пользователя LDAP с приведенной ниже переменной. Я использую библиотеку Net :: LDAP, но до сих пор не могу достичь своей цели. Мне нужна помощь, чтобы понять процесс аутентификации LDAP и логику, которую я должен использовать для аутентификации пользователя LDAP.Как выполнить аутентификацию LDAP в Perl

У меня есть вопрос: «Мне нужно проверить, существует ли пользователь 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

Пожалуйста, также показывают, как вы использовали Net :: LDAP и объяснить, что происходит, когда вы пытаетесь аутентификации. Что-то должно происходить. Отладить невозможно, не видя, что вы сделали. – simbabque

+0

Вот код, который я использую для проверки подлинности LDAP. $ ldap = Net :: LDAP-> new ($ HOST, port => $ PORT) или умереть «Cant Connect to LDAP server: $ @»; if ($ ldap-> bind ($ USER, password => $ PWD)) { # успешная аутентификация \t \t печать «Успешная аутентификация \ n»; } \t else { \t \t Печать «Неудачная аутентификация \ n»; \t \t push (@downlist, $ server); \t \t - $ upcount; \t} $ ldap-> unbind(); –

+0

Пожалуйста, отредактируйте ваш вопрос. Это не форум, и комментарии не предназначены для кода. Это невозможно. – simbabque

ответ

0

Net :: 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

Yay! Я полезен! :-D –

 Смежные вопросы

  • Нет связанных вопросов^_^