Fix handling of authz configurations, make default authz logic replicate

2.2.x authz logic and support existing configurations (including .htaccess
files), and replace <Satisfy*>, Reject, and AuthzMergeRules directives
with Match, <Match*>, and AuthzMerge directives.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@709838 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Chris Darroch
2008-11-02 04:01:32 +00:00
parent 54a737b120
commit fa0fdfa2fc
6 changed files with 486 additions and 556 deletions

View File

@ -44,7 +44,6 @@ extern "C" {
#define AUTHN_PROVIDER_NAME_NOTE "authn_provider_name"
#define AUTHZ_PROVIDER_NAME_NOTE "authz_provider_name"
#define AUTHZ_ACCESS_PASSED_NOTE "authz_access_passed"
#define AUTHN_PREFIX "AUTHENTICATE_"
@ -72,15 +71,10 @@ typedef enum {
typedef enum {
AUTHZ_DENIED,
AUTHZ_GRANTED,
AUTHZ_GENERAL_ERROR,
AUTHZ_NEUTRAL
AUTHZ_NEUTRAL,
AUTHZ_GENERAL_ERROR
} authz_status;
typedef enum {
AUTHZ_REQSTATE_ONE,
AUTHZ_REQSTATE_ALL
} authz_request_state;
typedef struct {
/* Given a username and password, expected to return AUTH_GRANTED
* if we can validate this user/password combination.
@ -112,23 +106,6 @@ typedef struct {
const char *require_line);
} authz_provider;
/* A linked-list of authn providers. */
typedef struct authz_provider_list authz_provider_list;
struct authz_provider_list {
const char *provider_name;
const authz_provider *provider;
authz_provider_list *one_next;
authz_provider_list *all_next;
/** If a Limit method is in effect, this field will be set */
apr_int64_t method_mask;
authz_request_state req_state;
int req_state_level;
/** String following 'require <provider>' from config file */
char *requirement;
int is_reject;
};
#ifdef __cplusplus
}
#endif