Аутентификация LDAP с использованием RADIUS-сервера
У меня есть сервер RADIUS с пользовательским методом аутентификации. У меня есть база данных Mysql с паролями CMS Django, которые хэшируются в PBKDF2_SHA256, поэтому мне пришлось написать собственный скрипт аутентификации. Мои разделы авторизации RADIUS выглядят следующим образом:
authorize {
update control {
Auth-Type := `/usr/bin/php -f /usr/djangologin/cpauth.php %{User-Name} %{User-Password}`
}
}
Скрипт проверяет пароль с помощью python passlib, возвращая true или false, и поэтому RADIUS возвращает Access-Accept или Accept-Reject.
Теперь мне нужно настроить LDAP-сервер, потому что одно из наших новых программ (Ulteo) не поддерживает аутентификацию RADIUS.
Я никогда не работал с LDAP раньше. Прежде чем я попытаюсь достичь невозможного, вот мои основные вопросы:
1. Я не выяснил, как именно хранятся пароли. Как они зашифрованы? Я знаю, что они хранятся в /etc/shadow. Они зашифрованы в MD5 или SHA256 / 512?
2. Можно ли использовать RADIUS в качестве метода аутентификации для LDAP-сервера? Например, пользователь хочет пройти аутентификацию на сервере LDAP. Сервер LDAP ищет имя пользователя и передает его через RADIUS. В случае успеха RADIUS возвращает Access-Accept, а LDAP-сервер подтверждает успешный вход в систему.
3. Если 2. невозможно: есть ли способ создать пользовательский метод аутентификации, подобный тому, который я создал для RADIUS? Есть ли лучший способ архивировать мою цель?
Спасибо!
1 ответ
На большинстве серверов LDAP пароль хранится в каталоге, на котором расположен сервер. Я думаю, что было бы проще хранить пароли в LDAP и аутентифицировать RADIUS и все остальное против LDAP. Однако, например, OpenLDAP поддерживает SASL, так что вы можете аутентифицировать LDAP против чего-то другого, обычно Kerberos.