~ubuntu-branches/ubuntu/feisty/apache2/feisty

« back to all changes in this revision

Viewing changes to modules/aaa/mod_authn_default.c

  • Committer: Bazaar Package Importer
  • Author(s): Andreas Barth
  • Date: 2006-12-09 21:05:45 UTC
  • mfrom: (0.6.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20061209210545-h70s0xaqc2v8vqr2
Tags: 2.2.3-3.2
* Non-maintainer upload.
* 043_ajp_connection_reuse: Patch from upstream Bugzilla, fixing a critical
  issue with regard to connection reuse in mod_proxy_ajp.
  Closes: #396265

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
#include "apr_strings.h"
 
18
#define APR_WANT_STRFUNC
 
19
#include "apr_want.h"
 
20
 
 
21
#include "ap_config.h"
 
22
#include "httpd.h"
 
23
#include "http_config.h"
 
24
#include "http_core.h"
 
25
#include "http_log.h"
 
26
#include "http_protocol.h"
 
27
#include "http_request.h"
 
28
 
 
29
typedef struct {
 
30
    int authoritative;
 
31
} authn_default_config_rec;
 
32
 
 
33
static void *create_authn_default_dir_config(apr_pool_t *p, char *d)
 
34
{
 
35
    authn_default_config_rec *conf = apr_palloc(p, sizeof(*conf));
 
36
 
 
37
    conf->authoritative = 1; /* keep the fortress secure by default */
 
38
    return conf;
 
39
}
 
40
 
 
41
static const command_rec authn_default_cmds[] =
 
42
{
 
43
    AP_INIT_FLAG("AuthDefaultAuthoritative", ap_set_flag_slot,
 
44
                 (void *)APR_OFFSETOF(authn_default_config_rec,
 
45
                                      authoritative),
 
46
                 OR_AUTHCFG,
 
47
                 "Set to 'Off' to allow access control to be passed along to "
 
48
                 "lower modules if the UserID is not known to this module. "
 
49
                         "(default is On)."),
 
50
    {NULL}
 
51
};
 
52
 
 
53
module AP_MODULE_DECLARE_DATA authn_default_module;
 
54
 
 
55
static int authenticate_no_user(request_rec *r)
 
56
{
 
57
    authn_default_config_rec *conf = ap_get_module_config(r->per_dir_config,
 
58
                                                      &authn_default_module);
 
59
 
 
60
    const char *type;
 
61
 
 
62
    if (!(type = ap_auth_type(r))) {
 
63
        return DECLINED;
 
64
    }
 
65
 
 
66
    /* fill in the r->user field */
 
67
    if (!strcasecmp(type, "Basic")) {
 
68
        const char *sent_pw;
 
69
        int res;
 
70
 
 
71
        if ((res = ap_get_basic_auth_pw(r, &sent_pw)) != OK) {
 
72
            return res;
 
73
        }
 
74
    }
 
75
 
 
76
    if (conf->authoritative == 0) {
 
77
        return DECLINED;
 
78
    }
 
79
 
 
80
    ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
 
81
                  "access to %s failed, reason: verification of user id '%s' "
 
82
                  "not configured",
 
83
                  r->uri, r->user ? r->user : "<null>");
 
84
 
 
85
    ap_note_auth_failure(r);
 
86
    return HTTP_UNAUTHORIZED;
 
87
}
 
88
 
 
89
static void register_hooks(apr_pool_t *p)
 
90
{
 
91
    ap_hook_check_user_id(authenticate_no_user,NULL,NULL,APR_HOOK_LAST);
 
92
}
 
93
 
 
94
module AP_MODULE_DECLARE_DATA authn_default_module =
 
95
{
 
96
    STANDARD20_MODULE_STUFF,
 
97
    create_authn_default_dir_config,/* dir config creater */
 
98
    NULL,                           /* dir merger --- default is to override */
 
99
    NULL,                           /* server config */
 
100
    NULL,                           /* merge server config */
 
101
    authn_default_cmds,             /* command apr_table_t */
 
102
    register_hooks                  /* register hooks */
 
103
};