nginx AD身份验证失败

时间:2018-03-22 08:51:43

标签: nginx active-directory ldap

尝试将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?

1 个答案:

答案 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:属性。