This module allows FastCGI authorizer applications to authenticate users and authorize access to resources. It supports generic FastCGI authorizers which participate in a single phase for authentication and authorization as well as Apache httpd-specific authenticators and authorizors which participate in one or both phases.
FastCGI authorizers can authenticate using user id and password, such as for Basic authentication, or can authenticate using arbitrary mechanisms.
The invocation modes for FastCGI authorizers supported by this module are distinguished by two characteristics, type and auth mechanism.
Type is simply authn
for authentication,
authz
for authorization, or authnz
for
combined authentication and authorization.
Auth mechanism refers to the Apache httpd configuration
mechanisms and processing phases, and can be
AuthBasicProvider
, Require
, or
check_user_id
. The first two of these
correspond to the directives used to enable participation in the
appropriate processing phase.
Descriptions of each mode:
authn
, mechanism
AuthBasicProvider
FCGI_ROLE
is set to AUTHORIZER
and
FCGI_APACHE_ROLE
is set to AUTHENTICATOR
.
The application must be defined as provider type authn
using authz
, mechanism
Require
FCGI_ROLE
is set to
AUTHORIZER
and FCGI_APACHE_ROLE
is set to
AUTHORIZER
. The application must be defined as
provider type authz using authnz
, mechanism
AuthBasicProvider
+ Require
AUTHORIZER
protocol, FCGI_ROLE
is set to
AUTHORIZER
and FCGI_APACHE_ROLE
is not set.
The application must be defined as provider type authnz
using authn
, mechanism
check_user_id
FCGI_ROLE
is set to
AUTHORIZER
and FCGI_APACHE_ROLE
is set to
AUTHENTICATOR
. The application must be defined as
provider type authn using AUTHENTICATOR
and AUTHORIZER
), define
separate providers as follows, even if they map to the same
application:
AUTHORIZER
role
(authentication and authorizer in one invocation), define a
single provider as follows:
The following are potential features which are not currently implemented:
FCGI_APACHE_ROLE
to ACCESS_CHECKER
.error
and higher.warn
.debug
.trace2
. The value of the
REMOTE_PASSWD
variable will be obscured,
but any other sensitive data will be visible in the
log.trace5
. All
sensitive data will be visible in the log.This directive is used to define a FastCGI application as a provider for a particular phase of authentication or authorization.
None
option ...This directive is used to enable a FastCGI authorizer to handle a specific processing phase of authentication or authorization.
Some capabilities of FastCGI authorizers require enablement
using this directive instead of
UserExpr
option belowNone
None
to disable a provider enabled
with this directive in an outer scope, such as in a parent
directory.UserExpr
is configured and evaluates to an empty string (e.g., authorizer
didn't return a variable), this value will be used as the user
id. This is typically used when the authorizer has a concept of
guest, or unauthenticated, users and guest users are mapped to
some specific user id for logging and other purposes.Variable-XXX
setting returned by the authorizer using an option like
UserExpr "%{reqenv:XXX}"
. If
this option is specified and the user id can't be retrieved
using the expression after a successful authentication, the
request will be rejected with a 500 error.