diff --git a/example.conf b/example.conf index 1a0dabf..1512b2d 100644 --- a/example.conf +++ b/example.conf @@ -11,32 +11,48 @@ http { sendfile on; keepalive_timeout 65; - auth_ldap_url ldap://ldap.example.com/dc=example,dc=com?uid?sub?(objectClass=person); - auth_ldap_binddn cn=nginx,ou=service,dc=example,dc=com; - auth_ldap_binddn_passwd mYsUperPas55W0Rd; - - auth_ldap_group_attribute uniquemember; # default 'member' - auth_ldap_group_attribute_is_dn on; # default on - - server { - listen 8081; - server_name localhost; - - location / { - auth_ldap "Closed content"; - - #auth_ldap_require valid_user; - auth_ldap_require user 'cn=Super User,ou=user,dc=example,dc=com'; - auth_ldap_require group 'cn=admins,ou=group,dc=example,dc=com'; - auth_ldap_require group 'cn=user,ou=group,dc=example,dc=com'; - auth_ldap_satisfy any; - root html; - index index.html index.htm; - } - - error_page 500 502 503 504 /50x.html; - location = /50x.html { - root html; - } + # define ldap server + ldap_server ad_1 { + # user search base. + url "ldap://:3268/OU=Offices,DC=company,DC=com?sAMAccountName?sub?(objectClass=person)"; + # bind as + binddn "CN=Operator,OU=Service Accounts,DC=company,DC=com"; + # bind pw + binddn_passwd ; + # group attribute name which contains member object + group_attribute member; + # search for full DN in member object + group_attribute_is_dn on; + # matching algorithm (any / all) + satisfy any; + # list of allowed groups + require group "CN=Admins,OU=My Security Groups,DC=company,DC=com"; + require group "CN=New York Users,OU=My Security Groups,DC=company,DC=com"; + # list of allowed users + # require 'valid_user' cannot be used together with 'user' as valid user is a superset + # require valid_user; + require user "CN=Batman,OU=Users,OU=New York Office,OU=Offices,DC=company,DC=com"; + require user "CN=Robocop,OU=Users,OU=New York Office,OU=Offices,DC=company,DC=com"; } + +} + +server { + listen 8081; + server_name localhost; + + location / { + # adding ldap authentication + auth_ldap "Closed content"; + auth_ldap_servers ad_1; + + root html; + index index.html index.htm; + } + + error_page 500 502 503 504 /50x.html; + + location = /50x.html { + root html; + } } diff --git a/ngx_http_auth_ldap_module.c b/ngx_http_auth_ldap_module.c index c27dc14..54a1c05 100644 --- a/ngx_http_auth_ldap_module.c +++ b/ngx_http_auth_ldap_module.c @@ -1898,7 +1898,7 @@ ngx_http_auth_ldap_check_group(ngx_http_request_t *r, ngx_http_auth_ldap_ctx_t * ctx->outcome = OUTCOME_ALLOW; return NGX_OK; } - } else if (ctx->error_code == LDAP_COMPARE_FALSE || ctx->error_code == LDAP_NO_SUCH_ATTRIBUTE) { + } else if (ctx->error_code == LDAP_COMPARE_FALSE || ctx->error_code == LDAP_NO_SUCH_ATTRIBUTE || ctx->error_code == LDAP_NO_SUCH_OBJECT) { if (ctx->server->satisfy_all == 1) { ctx->outcome = OUTCOME_DENY; return NGX_DECLINED;