1 /* Licensed to the Apache Software Foundation (ASF) under one or more
2 * contributor license agreements. See the NOTICE file distributed with
3 * this work for additional information regarding copyright ownership.
4 * The ASF licenses this file to You under the Apache License, Version 2.0
5 * (the "License"); you may not use this file except in compliance with
6 * the License. You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 * @brief Authentication and Authorization Extension for Apache
21 * @defgroup MOD_AUTH mod_auth
22 * @ingroup APACHE_MODS
25 #ifndef APACHE_MOD_AUTH_H
26 #define APACHE_MOD_AUTH_H
28 #include "apr_pools.h"
30 #include "apr_optional.h"
33 #include "http_config.h"
39 #define AUTHN_PROVIDER_GROUP "authn"
40 #define AUTHZ_PROVIDER_GROUP "authz"
41 #define AUTHN_PROVIDER_VERSION "0"
42 #define AUTHZ_PROVIDER_VERSION "0"
43 #define AUTHN_DEFAULT_PROVIDER "file"
45 #define AUTHN_PROVIDER_NAME_NOTE "authn_provider_name"
46 #define AUTHZ_PROVIDER_NAME_NOTE "authz_provider_name"
48 #define AUTHN_PREFIX "AUTHENTICATE_"
50 /** all of the requirements must be met */
54 /** any of the requirements must be met */
58 /** There are no applicable satisfy lines */
59 #ifndef SATISFY_NOSPEC
60 #define SATISFY_NOSPEC 2
79 /* Given a username and password, expected to return AUTH_GRANTED
80 * if we can validate this user/password combination.
82 authn_status (*check_password)(request_rec *r, const char *user,
83 const char *password);
85 /* Given a user and realm, expected to return AUTH_USER_FOUND if we
86 * can find a md5 hash of 'user:realm:password'
88 authn_status (*get_realm_hash)(request_rec *r, const char *user,
89 const char *realm, char **rethash);
92 /* A linked-list of authn providers. */
93 typedef struct authn_provider_list authn_provider_list;
95 struct authn_provider_list {
96 const char *provider_name;
97 const authn_provider *provider;
98 authn_provider_list *next;
102 /* Given a request_rec, expected to return AUTHZ_GRANTED
103 * if we can authorize user access.
105 authz_status (*check_authorization)(request_rec *r,
106 const char *require_line);