我需要配置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的错误吗?
答案 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服务器建立两个独立的连接,但它可以正常工作。