github.com/krum110487/go-htaccess@v0.0.0-20240316004156-60641c8e7598/tests/data/apache_2_2_34/include/mod_auth.h (about) 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 34 extern "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 45 typedef enum { 46 AUTH_DENIED, 47 AUTH_GRANTED, 48 AUTH_USER_FOUND, 49 AUTH_USER_NOT_FOUND, 50 AUTH_GENERAL_ERROR 51 } authn_status; 52 53 typedef 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. */ 68 typedef struct authn_provider_list authn_provider_list; 69 70 struct authn_provider_list { 71 const char *provider_name; 72 const authn_provider *provider; 73 authn_provider_list *next; 74 }; 75 76 typedef 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