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 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 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. 15 */ 16 17/** 18 * @file mod_auth.h 19 * @brief uthentication Extension Module for Apache 20 * 21 * @defgroup MOD_AUTH mod_auth 22 * @ingroup APACHE_MODS 23 */ 24 25#ifndef APACHE_MOD_AUTH_H 26#define APACHE_MOD_AUTH_H 27 28#include "apr_pools.h" 29#include "apr_hash.h" 30 31#include "httpd.h" 32 33#ifdef __cplusplus 34extern "C" { 35#endif 36 37#define AUTHN_PROVIDER_GROUP "authn" 38#define AUTHN_DEFAULT_PROVIDER "file" 39 40#define AUTHZ_GROUP_NOTE "authz_group_note" 41#define AUTHN_PROVIDER_NAME_NOTE "authn_provider_name" 42 43#define AUTHN_PREFIX "AUTHENTICATE_" 44 45typedef enum { 46 AUTH_DENIED, 47 AUTH_GRANTED, 48 AUTH_USER_FOUND, 49 AUTH_USER_NOT_FOUND, 50 AUTH_GENERAL_ERROR 51} authn_status; 52 53typedef struct { 54 /* Given a username and password, expected to return AUTH_GRANTED 55 * if we can validate this user/password combination. 56 */ 57 authn_status (*check_password)(request_rec *r, const char *user, 58 const char *password); 59 60 /* Given a user and realm, expected to return AUTH_USER_FOUND if we 61 * can find a md5 hash of 'user:realm:password' 62 */ 63 authn_status (*get_realm_hash)(request_rec *r, const char *user, 64 const char *realm, char **rethash); 65} authn_provider; 66 67/* A linked-list of authn providers. */ 68typedef struct authn_provider_list authn_provider_list; 69 70struct authn_provider_list { 71 const char *provider_name; 72 const authn_provider *provider; 73 authn_provider_list *next; 74}; 75 76typedef struct { 77 /* For a given user, return a hash of all groups the user belongs to. */ 78 apr_hash_t * (*get_user_groups)(request_rec *r, const char *user); 79} authz_provider; 80 81#ifdef __cplusplus 82} 83#endif 84 85#endif 86