我安装了 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 服务器,作为允许验证其他用户的用户,然后使用 Web 浏览器中提供的数据来验证用户并报告。为此,它需要知道哪个用户(专有名称或DN
用 LDAP 语言来说)以及应该使用哪个密码进行此绑定。它们在参数binddn
和binddn_passwd
中配置nginx
。
答案2
基于此 github页。看起来“binddn”是您登录 ldap 服务器的用户名,而 binddn_passwd 是密码。有些绑定服务器需要登录后才能向连接显示信息。
答案3
Ldap 服务器需要可分辨用户名(例如 cn=Test User,ou=something,dc=example,dc=org)来验证用户身份。但在大多数情况下,用户更喜欢以“测试用户”身份登录。因此,要获取用户记录的可分辨名称,客户端(nginx)应连接到 ldap 服务器并查找用户登录属性(在您的例子中为 sAMAccountName)等于用户名的记录。如果服务器允许匿名用户连接并进行此类搜索,则不需要 binddn 和 binddn_password,但如果服务器是安全的,则必须提供凭据才能进行搜索。
获取用户 DN 后(如果搜索查询返回任何结果),客户端使用用户 DN 和用户密码在 ldap 服务器上进行绑定(验证)。如果成功 - 用户验证通过。