Skip to content

Commit

Permalink
Apply earlier fix to the ldapsearch case:
Browse files Browse the repository at this point in the history
Arrange for backend LDAP connections to be returned 
to the pool by a fixup hook rather than staying locked
until the end of (a potentially slow) request.



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1913962 13f79535-47bb-0310-9956-ffa450edef68
  • Loading branch information
minfrin committed Nov 19, 2023
1 parent 4367037 commit a64585b
Showing 1 changed file with 31 additions and 3 deletions.
34 changes: 31 additions & 3 deletions modules/aaa/mod_authnz_ldap.c
Original file line number Diff line number Diff line change
Expand Up @@ -1429,12 +1429,40 @@ static authz_status ldapsearch_check_authorization(request_rec *r,
return AUTHZ_DENIED;
}

if (sec->host) {
if (!sec->host) {
ap_log_rerror(APLOG_MARK, APLOG_WARNING, 0, r, APLOGNO(01738)
"auth_ldap authorize: no sec->host - weird...?");
return AUTHZ_DENIED;
}

/*
* If we have been authenticated by some other module than mod_auth_ldap,
* the req structure needed for authorization needs to be created
* and populated with the userid and DN of the account in LDAP
*/

if (!*r->user) {
ap_log_rerror(APLOG_MARK, APLOG_WARNING, 0, r, APLOGNO(01739)
"ldap authorize: Userid is blank, AuthType=%s",
r->ap_auth_type);
}

if (!req) {
authz_status rv = AUTHZ_DENIED;
req = build_request_config(r);
ldc = get_connection_for_authz(r, LDAP_SEARCH);
if (AUTHZ_GRANTED != (rv = get_dn_for_nonldap_authn(r, ldc))) {
return rv;
}
}
else {
ap_log_rerror(APLOG_MARK, APLOG_WARNING, 0, r, APLOGNO(02636)
"auth_ldap authorize: no sec->host - weird...?");
ldc = get_connection_for_authz(r, LDAP_SEARCH);
}

if (req->dn == NULL || !*req->dn) {
ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, APLOGNO(01742)
"auth_ldap authorize: require ldap-filter: user's DN "
"has not been defined; failing authorization");
return AUTHZ_DENIED;
}

Expand Down

0 comments on commit a64585b

Please sign in to comment.