| /* Copyright 2002-2004 The Apache Software Foundation |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| #ifndef APACHE_MOD_AUTH_H |
| #define APACHE_MOD_AUTH_H |
| |
| #include "apr_pools.h" |
| #include "apr_hash.h" |
| |
| #include "httpd.h" |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #define AUTHN_PROVIDER_GROUP "authn" |
| #define AUTHN_DEFAULT_PROVIDER "file" |
| |
| #define AUTHZ_GROUP_NOTE "authz_group_note" |
| |
| typedef enum { |
| AUTH_DENIED, |
| AUTH_GRANTED, |
| AUTH_USER_FOUND, |
| AUTH_USER_NOT_FOUND, |
| AUTH_GENERAL_ERROR |
| } authn_status; |
| |
| typedef struct { |
| /* Given a username and password, expected to return AUTH_GRANTED |
| * if we can validate this user/password combination. |
| */ |
| authn_status (*check_password)(request_rec *r, const char *user, |
| const char *password); |
| |
| /* Given a user and realm, expected to return AUTH_USER_FOUND if we |
| * can find a md5 hash of 'user:realm:password' |
| */ |
| authn_status (*get_realm_hash)(request_rec *r, const char *user, |
| const char *realm, char **rethash); |
| } authn_provider; |
| |
| /* A linked-list of authn providers. */ |
| typedef struct authn_provider_list authn_provider_list; |
| |
| struct authn_provider_list { |
| const char *provider_name; |
| const authn_provider *provider; |
| authn_provider_list *next; |
| }; |
| |
| typedef struct { |
| /* For a given user, return a hash of all groups the user belongs to. */ |
| apr_hash_t * (*get_user_groups)(request_rec *r, const char *user); |
| } authz_provider; |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif |