У нас есть сценарий оболочки, который запускает программу Perl для подключения к серверу LDAP и создания записей.
Это единственный скрипт, использующий ldap. На этом сервере размещаются все файлы, связанные с пакетной обработкой, и выполняются пакетные задания на autosys. Поэтому нам не нужна аутентификация LDAP на этом сервере. Мы используем ldap только для подключения к серверу LDAP и обновления записей. Аутентификация LDAP для некоторых других пользователей веб-приложений, которые нас сейчас не интересуют.
Теперь мы переводим наши серверы пакетной обработки с Solairs 10 на RHEL 6.6. На старой машине есть SUNWlldap, и мы пытаемся настроить клиент OpenLDAP на новой машине Linux. Сервер LDAP - это RHEL 5.11, использующий openldap.
На новой машине мы установили ниже оборотов.
nss-pam-ldapd-0.7.5-18.2.el6_4.x86_64,
openldap-2.4.39-8.el6.x86_64,
pam_ldap-185-11.el6.x86_64,
apr-util-ldap-1.3.9-3.el6_0.1.x86_64,
perl-Mozilla-LDAP-1.5.3-4.el6.x86_64,
compat-openldap-2.3.43-2.el6.x86_64,
perl-LDAP-0.40-1.el6.noarch.
Настроил клиент по ссылке ниже:
http://unixadminschool.com/blog/2013/03/rhel-6-implementation-of-ldap-authentication
Я пропустил часть сертификатов. Я искал сертификаты на старом сервере, но нигде не нашел. Я не понимаю, как он подключается без использования сертификатов, и не уверен, нужны ли нам сертификаты для нашей цели.
Ниже приведен сценарий, использующий ldap:
$oid001i.pl $input_file $LDAP_Server $LDAP_Port $LDAP_ID $LDAP_PWD $LDAP_UserBaseDN
Все эти переменные взяты из другого файла. Ниже представлено содержимое файла
LDAP_Server=servername.company.com
LDAP_Port=1389
LDAP_ID="cn=username,cn=users,dc=company,dc=com"
LDAP_PWD="password"
LDAP_UserBaseDN="cn=users,dc=company,dc=com"
Код Perl для привязки в oid001i.pl
:
$ldap = Net::LDAP->new( $LDAP_Server, port=>$LDAP_Port, version => 3);
$mesg = $ldap->bind( $LDAP_ID,password => $LDAP_PWD);
$SearchFor="cn=$cn";
#Perform Search
$mesg = $ldap->search( base => $LDAP_UserBaseDN, filter => $SearchFor,callback => \&ParseEntry,);
$mesg = $ldap->unbind; # take down session
Когда я выполняю
$perl oid001i.pl input_file server.company.com port "cn=username,cn=users,dc=company,dc=com" password "cn=users,dc=company,dc=com"
Получаем такую ошибку:
Can't call method "bind" on an undefined value at oid001i.pl line 21, <IN> line 1.
Я запускаю эту команду, чтобы проверить подключение и получить ошибки:
$ldapsearch -h servername.company.com -p 1389 -LLLx -b 'cn=users,dc=comapany,dc=com' -s base
Cannot connect to the LDAP server
Я что-то упустил? Требуются ли сертификаты для подключения к серверу LDAP? Что еще нужно сделать на стороне сервера ldap? Любая помощь будет оценена?