Я работал над переносом существующего кластера серверов на использование openldap для управления пользователями / паролями. Однако я столкнулся с проблемой - у меня нет доступа к паролям в виде обычного текста, и все методы SASL (которые я определил до сих пор) требуют паролей в виде обычного текста в базе данных. Единственный доступный формат - crypt. Период.
Для многих программ по-прежнему доступна простая аутентификация. Однако, если используется libldap2 (openldap), в частности, семейство функций ldap_sasl_interactive_bind поддерживает только соединения SASL, все остальные отключены и устарели.
Итак, как мне пройти аутентификацию, если SASL сломан? (SASL не поддерживает crypt = сломан)
Используемые подходы к аутентификации: радиус (свободный радиус)
сеть
пользовательские приложения C
ssh
ldap зеркальное отображение
Мне удалось заставить работать радиус, вот и все.
Помощь очень приветствуется - в документации не говорится, почему простая аутентификация устарела, и, похоже, она единственная, которая может работать. Каждый раз, когда задействован SASL, ничего не работает.
Среда - ubuntu-14.04; openldap, cyrus-sasl (через openldap), freeradius, apache и пользовательские компоненты C и C ++.
Нет большой разницы между простой аутентификацией LDAP и SASL / PLAIN. В обоих случаях пароль в виде открытого текста предоставляется клиентом и обрабатывается сервером. OpenLDAP не требует хранения паролей в простой текст, и, по сути, может использовать локальную систему склеп (3) функция. Поскольку вы имеете дело с паролями в виде открытого текста во время передачи, следует принять меры к тому, чтобы эти пароли не отправлялись в открытом виде. Обычно это делается с помощью STARTTLS как части соединения LDAP, но LDAPS также возможен.
$ ldapwhoami -h ldap.example.com -ZZ -x -D uid=user,ou=people,dc=example,dc=com -W
Enter LDAP Password:
dn:uid=user,ou=people,dc=example,dc=com
$ ldapwhoami -h ldap.example.com -ZZ -D uid=user,ou=people,dc=example,dc=com -W
Enter LDAP Password:
dn:uid=user,ou=people,dc=example,dc=com