Serveur HTTP Apache Version 2.4
Langues Disponibles: fr
Description: | Permet à une application d'autorisation FastCGI de gérer l'authentification et l'autorisation httpd. |
---|---|
Statut: | Extension |
Identificateur de Module: | authnz_fcgi_module |
Fichier Source: | mod_authnz_fcgi.c |
Compatibilité: | Disponible à partir de la version 2.4.10 du serveur HTTP Apache |
Ce module permet aux applications d'autorisation FastCGI d'authentifier les utilisateurs et de contrôler leur accès aux ressources. Il e les systèmes d'autorisation FastCGI génériques qui participent en une seule phase à l'authentification et à l'autorisation, ainsi que les processus d'authentification et d'autorisation spécifiques à Apache httpd qui interviennent en une ou plusieurs phases.
Les processus d'autorisation FastCGI peuvent authentifier un utilisateur via son identificateur et son mot de e comme dans le processus d'authentification basique, ou via un mécanisme arbitraire.
Les modes d'invocation des processus d'autorisation FastCGI que ce module e se distinguent par deux caractéristiques : le type et le mécanisme d'authentification.
Le Type est simplement authn
pour l'authentification, authz
pour l'autorisation et authnz
l'authentification et l'autorisation.
Le mécanisme d'authentification fait référence aux mécanismes d'authentification et aux phases de traitement de la configuration de Apache httpd, et peut être AuthBasirovider
, Require
, ou check__id
. Les deux premiers mécanismes correspondent aux directives utilisées pour participer aux phases de traitement appropriées.
Description de chaque mode:
authn
, mechanism AuthBasirovider
FCGI_ROLE
est définie à AUTHORIZER
, et la variable FCGI_APACHE_ROLE
à AUTHENTICATOR
. L'application doit être spécifiée en tant que fournisseur de type authn via la directive AuthBasirovider
. Lorsqu'elle est invoquée, l'application est censée authentifier le client à l'aide de l'identifiant et du mot de e de l'utilisateur. Exemple d'application :
#!/usr/bin/perl use FCGI; my $request = FCGI::Request(); while ($request->Accept() >= 0) { die if $ENV{'FCGI_APACHE_ROLE'} ne "AUTHENTICATOR"; die if $ENV{'FCGI_ROLE'} ne "AUTHORIZER"; die if !$ENV{'REMOTE_WD'}; die if !$ENV{'REMOTE_'}; print STDERR "This text is written to the web server error log.\n"; if ( ($ENV{'REMOTE_' } eq "foo" || $ENV{'REMOTE_'} eq "foo1") && $ENV{'REMOTE_WD'} eq "bar" ) { print "Status: 200\n"; print "Variable-AUTHN_1: authn_01\n"; print "Variable-AUTHN_2: authn_02\n"; print "\n"; } else { print "Status: 401\n\n"; } }Exemple de configuration httpd :
AuthnzFcgiDefineProvider authn FooAuthn fcgi://localhost:10102/ <Location "/protected/"> AuthType Basic AuthName "Restricted" AuthBasirovider FooAuthn Require ... </Location>
authz
, mechanism Require
FCGI_ROLE
est définie à AUTHORIZER
et FCGI_APACHE_ROLE
à AUTHORIZER
. L'application doit être spécifiée en tant que fournisseur de type authz via la directive AuthnzFcgiDefineProvider
. Lorsqu'elle est invoquée, l'application est censée contrôler les accès du client à l'aide de l'identifiant utilisateur et d'autres données contenues dans la requête. Exemple d'application :
#!/usr/bin/perl use FCGI; my $request = FCGI::Request(); while ($request->Accept() >= 0) { die if $ENV{'FCGI_APACHE_ROLE'} ne "AUTHORIZER"; die if $ENV{'FCGI_ROLE'} ne "AUTHORIZER"; die if $ENV{'REMOTE_WD'}; print STDERR "This text is written to the web server error log.\n"; if ($ENV{'REMOTE_'} eq "foo1") { print "Status: 200\n"; print "Variable-AUTHZ_1: authz_01\n"; print "Variable-AUTHZ_2: authz_02\n"; print "\n"; } else { print "Status: 403\n\n"; } }Exemple de configuration httpd :
AuthnzFcgiDefineProvider authz FooAuthz fcgi://localhost:10103/ <Location "/protected/"> AuthType ... AuthName ... AuthBasirovider ... Require FooAuthz </Location>
authnz
, mechanism AuthBasirovider
+ Require
FCGI_ROLE
est définie à AUTHORIZER
et FCGI_APACHE_ROLE
n'est pas définie. L'application doit être spécifiée en tant que fournisseur de type authnz via la directive AuthnzFcgiDefineProvider
. L'application est censée assurer l'authentification et l'autorisation au cours d'une même invocation à l'aide de l'identifiant et du mot de e de l'utilisateur et d'autres données contenues dans la requête. L'invocation de l'application intervient au cours de la phase d'authentification de l'API Apache httpd. Si l'application renvoie le code 200, et si le même fournisseur est invoqué au cours de la phase d'autorisation (via une directive Require
), mod_authnz_fcgi renverra un code de type success pour la phase d'autorisation sans invoquer l'application. Exemple d'application :
#!/usr/bin/perl use FCGI; my $request = FCGI::Request(); while ($request->Accept() >= 0) { die if $ENV{'FCGI_APACHE_ROLE'}; die if $ENV{'FCGI_ROLE'} ne "AUTHORIZER"; die if !$ENV{'REMOTE_WD'}; die if !$ENV{'REMOTE_'}; print STDERR "This text is written to the web server error log.\n"; if ( ($ENV{'REMOTE_' } eq "foo" || $ENV{'REMOTE_'} eq "foo1") && $ENV{'REMOTE_WD'} eq "bar" && $ENV{'REQUEST_URI'} =~ m%/bar/.*%) { print "Status: 200\n"; print "Variable-AUTHNZ_1: authnz_01\n"; print "Variable-AUTHNZ_2: authnz_02\n"; print "\n"; } else { print "Status: 401\n\n"; } }Exemple de configuration httpd :
AuthnzFcgiDefineProvider authnz FooAuthnz fcgi://localhost:10103/ <Location "/protected/"> AuthType Basic AuthName "Restricted" AuthBasirovider FooAuthnz Require FooAuthnz </Location>
authn
, mechanism check__id
FCGI_ROLE
est définie à AUTHORIZER
et FCGI_APACHE_ROLE
à AUTHENTICATOR
. L'application doit être spécifiée en tant que fournisseur de type authn via une directive AuthnzFcgiCheckAuthnProvider
permet de l'invoquer. Exemple d'application :
#!/usr/bin/perl use FCGI; my $request = FCGI::Request(); while ($request->Accept() >= 0) { die if $ENV{'FCGI_APACHE_ROLE'} ne "AUTHENTICATOR"; die if $ENV{'FCGI_ROLE'} ne "AUTHORIZER"; # This authorizer assumes that the RequireBasicAuth option of # AuthnzFcgiCheckAuthnProvider is On: die if !$ENV{'REMOTE_WD'}; die if !$ENV{'REMOTE_'}; print STDERR "This text is written to the web server error log.\n"; if ( ($ENV{'REMOTE_' } eq "foo" || $ENV{'REMOTE_'} eq "foo1") && $ENV{'REMOTE_WD'} eq "bar" ) { print "Status: 200\n"; print "Variable-AUTHNZ_1: authnz_01\n"; print "Variable-AUTHNZ_2: authnz_02\n"; print "\n"; } else { print "Status: 401\n\n"; # If a response body is written here, it will be returned to # the client. } }Exemple de configuration httpd :
AuthnzFcgiDefineProvider authn FooAuthn fcgi://localhost:10103/ <Location "/protected/"> AuthType ... AuthName ... AuthnzFcgiCheckAuthnProvider FooAuthn \ Authoritative On \ RequireBasicAuth Off \ Expr "%{reqenv:REMOTE_}" Require ... </Location>
AUTHENTICATOR
et AUTHORIZER
), vous pouvez définir des fournisseurs séparés comme suit, même s'ils correspondent à la même application : AuthnzFcgiDefineProvider authn FooAuthn fcgi://localhost:10102/ AuthnzFcgiDefineProvider authz FooAuthz fcgi://localhost:10102/Spécifie le fournisseur authn via la directive
Require
: AuthType Basic AuthName "Restricted" AuthBasirovider FooAuthn Require FooAuthz
AUTHORIZER
(authentification et autorisation en une seule invocation), vous pouvez définir un fournisseur unique comme suit : AuthnzFcgiDefineProvider authnz FooAuthnz fcgi://localhost:10103/Spécifie le fournisseur authnz via les directives
AuthBasirovider
et Require
: AuthType Basic AuthName "Restricted" AuthBasirovider FooAuthnz Require FooAuthnz
Les fonctionnalités suivantes ne sont pas encore implémentées :
FCGI_APACHE_ROLE
est définie à ACCESS_CHECKER
.
fcgistarter
permet de les démarrer.
Proxy
utilisée avec les répondeurs FastCGI.
error
ou supérieur.warn
.debug
.trace2
. La valeur de la variable REMOTE_WD
sera occultée, mais toute autre donnée sensible sera visible dans le journal.trace5
. Toutes les données sensibles seront visibles dans le journal.La directive LogLevel
permet de configurer un niveau de journalisation spécifique à mod_authnz_fcgi. Par exemple :
LogLevel info authnz_fcgi:trace8
Description: | Permet à une application FastCGI de gérer l'accroche d'authentification check_authn. |
---|---|
Syntaxe: | AuthnzFcgiCheckAuthnProvider provider-name| |
Défaut: | none |
Contexte: | répertoire |
Statut: | Extension |
Module: | mod_authnz_fcgi |
Cette directive permet de confier à une application FastCGI la gestion d'une phase spécifique du processus d'authentification ou d'autorisation.
Certaines fonctionnalités des fournisseurs d'autorisation FastCGI nécessitent cette directive en lieu et place de AuthBasirovider
pour pouvoir être activées :
Expr
ci-dessousAuthnzFcgiDefineProvider
.
None
None
pour désactiver un fournisseur activé avec cette même directive dans une autre portée, par exemple dans un répertoire parent.
Expr
est défini et correspond à une chaîne vide, (par exemple, si le fournisseur d'autorisation ne renvoie aucune variable), c'est cette valeur qui sera utilisée comme id utilisateur par défaut. Cela se produit souvent lorsqu'on se trouve dans un contexte d'invité, ou d'utilisateur non authentifié ; les utilisateurs et invités se voient alors attribué un id utilisateur spécifique qui permettra de se connecter et d'accéder à certaines ressources.
Variable-XXX
renvoyée par le fournisseur d'autorisation via une option du style Expr "%{reqenv:XXX}"
. Si cette option est spécifiée, et si l'id utilisateur ne peut pas être définie via l'expression après une authentification réussie, la requête sera rejetée avec un code d'erreur 500.
Description: | Définit une application FastCGI en tant que fournisseur d'authentification et/ou autorisation |
---|---|
Syntaxe: | AuthnzFcgiDefineProvider type provider-name backend-address |
Défaut: | none |
Contexte: | configuration globale |
Statut: | Extension |
Module: | mod_authnz_fcgi |
Cette directive permet de définir une application FastCGI en tant que fournisseur pour une phase particulière d'authentification ou d'autorisation.
Require
.
fcgistarter
.
Langues Disponibles: fr