Nginx ldap auth登录不同的属性

时间:2015-06-19 06:50:16

标签: nginx

我需要配置nginx以两种方式登录:

cn=appname,ou=Applications,o=example.com
uid=username,ou=People,o=example.com

以下是ldap服务器的代码:

ldap_server ldapserver {
  url ldaps://ldap.example.com/o=example.com?uid,cn?sub?(..filter for search...)
}

但是,只有用户名可以登录,appname就可以了。 但是,如果我将uid和cn的位置切换为该URL,例如

url ldaps://ldap.example.com/o=example.com?cn,uid?sub?(..filter for search...)

然后appname可用于签名,用户名可以' t。

这是nginx-ldap-auth的错误吗?

1 个答案:

答案 0 :(得分:1)

通过查看source,该模块目前似乎是以这种方式设计的;即使ldap_url_parse函数(模块内部使用的函数)支持指定多个属性,它也只考虑逗号分隔列表中的第一个属性。

我会在https://github.com/kvspb/nginx-auth-ldap/issues添加功能请求/问题。

与此同时,您可以使用多个ldap_server块来定义两个不同的配置,一个具有一个属性,另一个具有另一个属性,例如:

ldap_server ldapserver_one {
    url ldaps://ldap.example.com/o=hp.com?uid?sub?(..filter for search...)
}
ldap_server ldapserver_two {
    url ldaps://ldap.example.com/o=hp.com?cn?sub?(..filter for search...)
}
location / {
    auth_ldap "Authorised Only";
    auth_ldap_servers ldapserver_one;
    auth_ldap_servers ldapserver_two;
    ...
} 

它需要与LDAP服务器建立两个独立的连接,但它可以正常工作。