尝试将Nginx配置为使用AD进行身份验证,并且一直收到以下错误。
2018/03/22 17:07:51 [error] 6981#0: http_auth_ldap: Could not connect
尝试过编写ldap url的不同方法,但似乎没有一种方法可行。配置(nginx.conf)文件中的当前身份验证模块如下所示:
ldap_server auth_server{
url ldap://corp.xxxxxx.co.xx:389/dc=corp,dc=xxxxxx,dc=co,dc=xx?uid?sub?(&(objectClass=person));
binddn "CORP\\desktop_user_xxxxx";
binddn_passwd "Pxxxxxxxx";
group_attribute uniquemember;
group_attribute_is_dn on;
require valid_user;
}
我也尝试了以下内容:
ldap_server auth_server{
url ldap://corp.xxxxxx.co.xx:389/dc=corp,dc=xxxxxx,dc=co,dc=xx?sAMAccountName?sub?(objectClass=person);
binddn "CORP\\desktop_user_xxxxx";
binddn_passwd "Pxxxxxxxx";
group_attribute uniquemember;
group_attribute_is_dn on;
require valid_user;
}
但是,具有相同凭据的ldapsearch可以正常工作,表明凭据正确且服务器可以访问。
ldapsearch -b "dc=corp,dc=xxxxxx,dc=co,dc=xx" -D "CORP\\desktop_user_xxxxx" -H "ldap://corp.xxxxxx.co.xx" -w Pxxxxxxxx "(&(objectClass=Person)(sAMAccountName=xxxx))"
如何将此ldapsearch字符串转换为nginx.conf中ldap_server中的URL?
答案 0 :(得分:0)
nginx配置中的binddn
必须是实际的可分辨名称。
CORP\\desktop_user_xxxxx
实际上并不是一个杰出的名字。它只是DOMAIN\sAMAccountName
。
由于您使用的ldapsearch
客户端允许它绑定到AD,您可以使用它来检索用户true dn
。
ldapsearch -b "dc=corp,dc=xxxxxx,dc=co,dc=xx" \
-D "CORP\\desktop_user_xxxxx" \
-H "ldap://corp.xxxxxx.co.xx" \
-w Pxxxxxxxx \
"(&(objectClass=Person)(sAMAccountName=desktop_user_xxxxx))"
以上内容应该会产生您正在寻找的用户条目,第一行应该以{{1}}开头。它看起来像这样......
dn:
使用dn: CN=Desktop User xxxxx,ou=Users,dc=corp,dc=xxxxxx,dc=co,dc=xx
之后的整个字符串作为nginx配置中的dn:
属性。