
Я установил Nginx с LDAP, он работает. Но я не могу понять назначение "binddn" и "binddn_passwd"
ldap_server dc1 {
url ldap://dc1.alexlinux.lan:3268/DC=alexlinux,DC=lan?sAMAccountName?sub?(objectClass=person);
binddn "alexlinux\\comp";
binddn_passwd 123;
group_attribute member;
group_attribute_is_dn on;
require valid_user;
require group "CN=systemtest,OU=Groups,DC=alexlinux,DC=lan";
}
Когда я открываю браузер, я ввожу свой доменный логин и пароль. Без этих параметров аутентификация не работает. Спасибо.
решение1
Фактически существует два подхода к использованию LDAP для аутентификации.
- Первый пытается использовать имя пользователя и пароль, введенные вами в веб-браузере, чтобысвязыватьк серверу ldap (это на языке LDAP означает войти на сервер LDAP). Если привязка прошла успешно, имя пользователя и пароль были верны, и вы вошли на свой веб-сайт. Однако для этого требуется, чтобы сервер LDAP был настроен на разрешение такого рода операций, что не всегда так.
- Второй метод работает, даже если первый не разрешен. При использовании этого метода клиент LDAP (
nginx
в вашем случае) привязывается к серверу LDAP как пользователь, которому разрешено проверять других пользователей, а затем использует данные, предоставленные в веб-браузере, для проверки пользователя и отправки отчета. Для этого ему необходимо знать, какой пользователь (Выдающееся имяилиDN
на языке LDAP) и какой пароль следует использовать для этой привязки. Они настраиваются в параметрахbinddn
иbinddn_passwd
вnginx
.
решение2
На основе этого githubстраница. Похоже, что 'binddn' — это имя пользователя, с которым вы входите на сервер ldap, а binddn_passwd — это пароль. Некоторые серверы bind требуют входа, прежде чем они откроют информацию для подключения.
решение3
Ldap-сервер требует отличительное имя пользователя (что-то вроде cn=Test User,ou=something,dc=example,dc=org) для аутентификации пользователя. Но в большинстве случаев пользователи предпочитают входить в систему просто как "Test user". Таким образом, чтобы получить отличительное имя записи пользователя, клиент (nginx) должен подключиться к ldap-серверу и найти запись, атрибут входа пользователя в систему (sAMAccountName в вашем случае) которой равен имени пользователя. Если сервер позволяет анонимному пользователю подключаться и выполнять такой поиск, binddn и binddn_password не требуются, но если сервер защищен, вы должны предоставить учетные данные для выполнения поиска.
После получения DN пользователя (если поисковый запрос вернул какие-либо результаты) клиент связывается (аутентифицируется) на сервере ldap с DN пользователя и паролем пользователя. Если успешно - пользователь аутентифицирован.