mirror of
https://github.com/apache/httpd.git
synced 2025-08-07 04:02:58 +03:00
mod_ldap, mod_authnzldap: Add support for nested groups (i.e. the ability
to authorize an authenticated user via a "require ldap-group X" directive where the user is not in group X, but is in a subgroup contained in X. PR 42891 [Paul J. Reder] git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@560373 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
@@ -96,6 +96,14 @@ typedef struct util_url_node_t {
|
||||
util_ald_cache_t *dn_compare_cache;
|
||||
} util_url_node_t;
|
||||
|
||||
/*
|
||||
* When a group is found, subgroups are stored in the group's cache entry.
|
||||
*/
|
||||
typedef struct util_compare_subgroup_t {
|
||||
const char **subgroupDNs;
|
||||
int len;
|
||||
} util_compare_subgroup_t;
|
||||
|
||||
/*
|
||||
* We cache every successful search and bind operation, using the username
|
||||
* as the key. Each node in the cache contains the returned DN, plus the
|
||||
@@ -121,6 +129,8 @@ typedef struct util_compare_node_t {
|
||||
const char *value;
|
||||
apr_time_t lastcompare;
|
||||
int result;
|
||||
int sgl_processed; /* 0 if no sgl processing yet. 1 if sgl has been processed (even if SGL is NULL). Saves repeat work on leaves. */
|
||||
struct util_compare_subgroup_t *subgroupList;
|
||||
} util_compare_node_t;
|
||||
|
||||
/*
|
||||
@@ -169,6 +179,8 @@ void util_ldap_dn_compare_node_display(request_rec *r, util_ald_cache_t *cache,
|
||||
void util_ald_free(util_ald_cache_t *cache, const void *ptr);
|
||||
void *util_ald_alloc(util_ald_cache_t *cache, unsigned long size);
|
||||
const char *util_ald_strdup(util_ald_cache_t *cache, const char *s);
|
||||
util_compare_subgroup_t *util_ald_sgl_dup(util_ald_cache_t *cache, util_compare_subgroup_t *sgl);
|
||||
void util_ald_sgl_free(util_ald_cache_t *cache, util_compare_subgroup_t **sgl);
|
||||
|
||||
/* Cache managing function */
|
||||
unsigned long util_ald_hash_string(int nstr, ...);
|
||||
|
Reference in New Issue
Block a user