Я столкнулся с некоторыми проблемами при получении OpenLDAP на FreeBSD (8.2-STABLE) аутентификации с использованием билетов Kerberos. Я надеюсь, что у меня только что произошел сбой в мозгу, поэтому, пожалуйста, дайте мне знать, что я пропустил что-то очевидное.
Вот где дела:
Kerberos работает нормально.
Я могу получить учетные данные, используя kinit
, и я могу использовать эти учетные данные для аутентификации (например, для входа по ssh или telnet).
OpenLDAP установлен и работает с базовой аутентификацией.
slapd явно связан с библиотеками SASL; ldd .../slapd
отчеты:
libsasl2.so.2 => /usr/local/lib/libsasl2.so.2 (0x800d07000)
Существует /usr/local/lib/sasl2/slapd.conf со следующим содержимым:
mech_list: GSSAPI
slapd сообщает, что поддерживает аутентификацию GSSAPI:
$ ldapsearch -x -b '' -s base supportedSASLMechanisms
dn:
supportedSASLMechanisms: GSSAPI
Существует /etc/krb5.keytab
с ключами для host/<myhostname>
и ldap/<myhostname>
.
Образец сервера / клиента SASL отлично работает с аутентификацией gssapi:
# server -p 2222 -s ldap -m gssapi
С последующим:
# client -p 2222 -s ldap -m gssapi
В конечном итоге приводит к:
successful authentication
И все еще...
Мне не удалось заставить slapd принять аутентификацию GSSAPI. Просто пытаюсь бежать ldapwhoami
с действительным билетом Kerberos приводит к следующей ошибке:
SASL/GSSAPI authentication started
ldap_sasl_interactive_bind_s: Other (e.g., implementation specific) error (80)
additional info: SASL(-1): generic failure: GSSAPI Error: No credentials were supplied, or the credentials were unavailable or inaccessible. (unknown mech-code 0 for mech unknown)
Та же ошибка регистрируется slapd
. Здесь я как бы врезался в стену; slapd даже с включенной различной отладкой не дает мне ничего полезного. Помогите?
Обновить: Просто ради удовольствия я решил попробовать настроить OpenLDAP в тюрьме Linux (CentOS 5), чтобы посмотреть, не изменилось ли поведение. После пересборки пакетов OpenLDAP (поддержка FreeBSD Linux не включает epoll()
системный вызов), он выдавал мне сообщения об ошибках, которые казались немного более полезными (относительно отсутствия принципалов Kerberos). По крайней мере, казалось, что согласование GSSAPI выполняется правильно. Похоже, это проблема FreeBSD ... может быть? Надеюсь на мнение кого-то там.
И ... загадочным образом заработало. Для записи, вот что кажется повторяющимся процессом:
ldap/...
главный.Убедитесь, что slapd сможет читать файл keytab. Самый простой механизм:
chgrp ldap /etc/krb5.keytab
chmod g+r /etc/krb5.keytab
sasl-host
, sasl-realm
, и sasl-regexp
.BASE
и URI
в /usr/local/etc/openldap/ldap.conf
.Протестируйте, получив билет Kerberos и затем запустив ldapwhoami -Y GSSAPI
.
У меня была точно такая же проблема, и в конце концов выяснилось, что это потому, что я установил sasl-host в slapd.conf как имя хоста сервера Kerberos.
Когда я изменил sasl-host на имя хоста ldap (например, sasl-host ldap.example.com), он работал правильно.