Serveur HTTP Apache Version 2.4

| 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 supporte 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 passe 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 supporte 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
    AuthBasicProvider, Require, ou
    check_user_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
      AuthBasicProviderFCGI_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 AuthnzFcgiDefineProvider, et
      activée via la directive AuthBasicProvider. Lorsqu'elle
      est invoquée, l'application est censée authentifier le client à
      l'aide de l'identifiant et du mot de passe 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_PASSWD'};
    die if !$ENV{'REMOTE_USER'};
    print STDERR "This text is written to the web server error log.\n";
    if ( ($ENV{'REMOTE_USER' } eq "foo" || $ENV{'REMOTE_USER'} eq "foo1") &&
        $ENV{'REMOTE_PASSWD'} 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" AuthBasicProvider FooAuthn Require ... </Location>
authz, mechanism
      RequireFCGI_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_PASSWD'};
    print STDERR "This text is written to the web server error log.\n";
    if ($ENV{'REMOTE_USER'} 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 ... AuthBasicProvider ... Require FooAuthz </Location>
authnz, mechanism
      AuthBasicProvider + RequireFCGI_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 passe 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_PASSWD'};
    die if !$ENV{'REMOTE_USER'};
    print STDERR "This text is written to the web server error log.\n";
    if ( ($ENV{'REMOTE_USER' } eq "foo" || $ENV{'REMOTE_USER'} eq "foo1") &&
        $ENV{'REMOTE_PASSWD'} 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" AuthBasicProvider FooAuthnz Require FooAuthnz </Location>
authn, mechanism
      check_user_idFCGI_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
      AuthnzFcgiDefineProvider. La
      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_PASSWD'};
    die if !$ENV{'REMOTE_USER'};
    print STDERR "This text is written to the web server error log.\n";
    if ( ($ENV{'REMOTE_USER' } eq "foo" || $ENV{'REMOTE_USER'} eq "foo1") &&
        $ENV{'REMOTE_PASSWD'} 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 \
                               UserExpr "%{reqenv:REMOTE_USER}"
  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
AuthBasicProvider
    et le fournisseur authz via la directive
    Require:
AuthType Basic AuthName "Restricted" AuthBasicProvider 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
AuthBasicProvider et
    Require :
AuthType Basic AuthName "Restricted" AuthBasicProvider 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.ProxyPass utilisée avec les répondeurs
      FastCGI.error ou supérieur.warn.debug.trace2. La valeur de la
	variable REMOTE_PASSWD 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
    AuthBasicProvider pour pouvoir être activées :
UserExpr ci-dessousAuthnzFcgiDefineProvider.NoneNone pour désactiver un fournisseur
      activé avec cette même directive dans une autre portée, par
      exemple dans un répertoire parent.UserExpr 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
	 UserExpr "%{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.
AuthBasicProvider et
      Require.fcgistarter.