<-
Apache > Serveur HTTP > Documentation > Version 2.4 > Modules

Module Apache mod_authz_core

Langues Disponibles:  en  |  fr 

Description:Autorisation basique
Statut:Base
Identificateur�de�Module:authz_core_module
Fichier�Source:mod_authz_core.c
Compatibilit�:Disponible depuis la version 2.3 d'Apache HTTPD

Sommaire

Ce module fournit des fonctionnalit�s d'autorisation basiques permettant d'accorder ou refuser l'acc�s � certaines zones du site web aux utilisateurs authentifi�s. mod_authz_core donne la possibilit� d'enregistrer divers fournisseurs d'autorisation. Il est en g�n�ral utilis� avec un module fournisseur d'authentification comme mod_authn_file, et un module d'autorisation comme mod_authz_user. Il permet aussi l'application d'une logique �labor�e au d�roulement du processus d'autorisation.

Directives

Sujets

top

Cr�ation des alias du fournisseur d'autorisation

Il est possible de cr�er des fournisseurs d'autorisation �tendus dans le fichier de configuration et de leur assigner un nom d'alias. On peut ensuite utiliser ces fournisseurs alias�s dans une directive Require de la m�me mani�re qu'on le ferait pour des fournisseurs d'autorisation de base. En plus de la possibilit� de cr�er et d'aliaser un fournisseur �tendu, le m�me fournisseur d'autorisation �tendu peut �tre r�f�renc� par plusieurs localisations.

Exemple

Dans l'exemple suivant, on cr�e deux alias de fournisseur d'autorisation ldap diff�rents bas�s sur le fournisseur d'autorisation ldap-group. Il est ainsi possible pour un seul r�pertoire de v�rifier l'appartenance � un groupe dans plusieurs serveurs ldap :

<AuthzProviderAlias ldap-group ldap-group-alias1 cn=my-group,o=ctx>
    AuthLDAPBindDN cn=youruser,o=ctx
    AuthLDAPBindPassword yourpassword
    AuthLDAPURL ldap://ldap.host/o=ctx
</AuthzProviderAlias>

<AuthzProviderAlias ldap-group ldap-group-alias2 cn=my-other-group,o=dev>
    AuthLDAPBindDN cn=yourotheruser,o=dev
    AuthLDAPBindPassword yourotherpassword
    AuthLDAPURL ldap://other.ldap.host/o=dev?cn
</AuthzProviderAlias>

Alias /secure /webpages/secure
<Directory /webpages/secure>
    Require all granted
    
    AuthBasicProvider file
    
    AuthType Basic
    AuthName LDAP_Protected_Place
    
    #implied OR operation
    Require ldap-group-alias1
    Require ldap-group-alias2
</Directory>
        
top

Conteneurs d'autorisation

Les directives de conteneur d'autorisation <RequireAll>, <RequireAny> et <RequireNone> peuvent �tre combin�es entre elles et avec la directive Require pour confectionner une logique d'autorisation complexe.

L'exemple ci-dessous illustre la logique d'autorisation suivante. Pour pouvoir acc�der � la ressource, l'utilisateur doit �tre l'utilisateur superadmin, ou appartenir aux deux groupes LDAP admins et Administrateurs et soit appartenir au groupe ventes ou avoir ventes comme valeur de l'attribut LDAP dept. De plus, pour pouvoir acc�der � la ressource, l'utilisateur ne doit appartenir ni au groupe temps, ni au groupe LDAP Employ�s temporaires.

<Directory /www/mydocs>
    <RequireAll>
        <RequireAny>
            Require user superadmin
            <RequireAll>
            Require group admins
            Require ldap-group cn=Administrators,o=Airius
                <RequireAny>
                Require group sales
                Require ldap-attribute dept="sales"
                </RequireAny>
            </RequireAll>
        </RequireAny>
        <RequireNone>
            Require group temps
            Require ldap-group cn=Temporary Employees,o=Airius
        </RequireNone>
    </RequireAll>
</Directory>
    
top

Les directives Require

Le module mod_authz_core met � disposition des fournisseurs d'autorisation g�n�riques utilisables avec la directive Require.

Require env

Le fournisseur env permet de contr�ler l'acc�s au serveur en fonction de l'existence d'une variable d'environnement. Lorsque Require env env-variable est sp�cifi�, la requ�te se voit autoriser l'acc�s si la variable d'environnement env-variable existe. Le serveur permet de d�finir facilement des variables d'environnement en fonction des caract�ristiques de la requ�te du client via les directives fournies par le module mod_setenvif. Cette directive Require env permet donc de contr�ler l'acc�s en fonction des valeurs des en-t�tes de la requ�te HTTP tels que User-Agent (type de navigateur), Referer, entre autres.

SetEnvIf User-Agent ^KnockKnock/2\.0 let_me_in
<Directory /docroot>
    Require env let_me_in
</Directory>
    

Avec cet exemple, les navigateurs dont la cha�ne user-agent commence par KnockKnock/2.0 se verront autoriser l'acc�s, alors que tous les autres seront rejet�s.

Require all

Le fournisseur all reproduit la fonctionnalit� pr�c�demment fournie par les directives 'Allow from all' et 'Deny from all'. Il accepte un argument dont les deux valeurs possibles sont : 'granted' ou 'denied'. Les exemples suivants autorisent ou interdisent l'acc�s � toutes les requ�tes.

    Require all granted
    
    Require all denied
    

Require method

Le fournisseur method permet d'utiliser la m�thode HTTP dans le processus d'autorisation. Les m�thodes GET et HEAD sont ici consid�r�es comme �quivalentes. La m�thode TRACE n'est pas support�e par ce fournisseur ; utilisez � la place la directive TraceEnable.

Dans l'exemple suivant, seules les m�thodes GET, HEAD, POST, et OPTIONS sont autoris�es :

        Require method GET POST OPTIONS
    

Dans l'exemple suivant, les m�thodes GET, HEAD, POST, et OPTIONS sont autoris�es sans authentification, alors que toutes les autres m�thodes n�cessitent un utilisateur valide :

<RequireAny>
     Require method GET POST OPTIONS
     Require valid-user
</RequireAny>
    

Require expr

Le fournisseur expr permet d'accorder l'autorisation d'acc�s en fonction d'expressions arbitraires.

         Require expr "%{TIME_HOUR} -ge 9 && %{TIME_HOUR} -le 17"
    

La syntaxe de l'expression est d�crite dans la documentation de ap_expr.

Normalement, l'expression est �valu�e avant l'authentification. Cependant, si l'expression renvoie false et se r�f�re � la variable %{REMOTE_USER}, le processus d'authentification sera engag� et l'expression r��valu�e.

top

AuthMerging Directive

Description:D�finit la mani�re dont chaque logique d'autorisation des sections de configuration se combine avec celles des sections de configuration pr�c�dentes.
Syntaxe:AuthMerging Off | And | Or
D�faut:AuthMerging Off
Contexte:r�pertoire, .htaccess
AllowOverride:AuthConfig
Statut:Base
Module:mod_authz_core

Lorsque l'autorisation est activ�e, elle est normalement h�rit�e par chaque section de configuration suivante, � moins qu'un jeu de directives d'autorisations diff�rent ne soit sp�cifi�. Il s'agit du comportement par d�faut, qui correspond � la d�finition explicite AuthMerging Off.

Dans certaines situations cependant, il peut �tre souhaitable de combiner la logique d'autorisation d'une section de configuration avec celle de la section pr�c�dente lorsque les sections de configuration se combinent entre elles. Dans ce cas, deux options sont disponibles, And et Or.

Lorsqu'une section de configuration contient AuthMerging And ou AuthMerging Or, sa logique d'autorisation se combine avec celle de la section de configuration qui la pr�c�de (selon l'ordre g�n�ral des sections de configuration), et qui contient aussi une logique d'autorisation, comme si les deux sections �taient concat�n�es respectivement dans une directive <RequireAll> ou <RequireAny>.

La d�finition de la directive AuthMerging ne concerne que la section de configuration dans laquelle elle appara�t. Dans l'exemple suivant, seuls les utilisateurs appartenant au groupe alpha sont autoris�s � acc�der � /www/docs. Les utilisateurs appartenant au groupe alpha ou au groupe beta sont autoris�s � acc�der � /www/docs/ab. Cependant, la d�finition implicite � Off de la directive AuthMerging s'applique � la section de configuration <Directory> concernant le r�pertoire /www/docs/ab/gamma, ce qui implique que les directives d'autorisation de cette section l'emportent sur celles des sections pr�c�dentes. Par voie de cons�quence, seuls les utilisateurs appartenant au groupe gamma sont autoris�s � acc�der � /www/docs/ab/gamma.
<Directory /www/docs>
    AuthType Basic
    AuthName Documents
    AuthBasicProvider file
    AuthUserFile /usr/local/apache/passwd/passwords
    Require group alpha
</Directory>

<Directory /www/docs/ab>
    AuthMerging Or
    Require group beta
</Directory>

<Directory /www/docs/ab/gamma>
    Require group gamma
</Directory>
    
top

<AuthzProviderAlias> Directive

Description:Regroupe des directives repr�sentant une extension d'un fournisseur d'autorisation de base qui pourra �tre r�f�renc�e � l'aide de l'alias sp�cifi�
Syntaxe:<AuthzProviderAlias fournisseur-de-base Alias Param�tres-Require> ... </AuthzProviderAlias>
Contexte:configuration du serveur
Statut:Base
Module:mod_authz_core

Les balises <AuthzProviderAlias> et </AuthzProviderAlias> permettent de regrouper des directives d'autorisation auxquelles on pourra faire r�f�rence � l'aide de l'alias sp�cifi� dans une directive Require.

top

AuthzSendForbiddenOnFailure Directive

Description:Envoie '403 FORBIDDEN' au lieu de '401 UNAUTHORIZED' si l'authentification r�ussit et si l'autorisation a �t� refus�e.
Syntaxe:AuthzSendForbiddenOnFailure On|Off
D�faut:AuthzSendForbiddenOnFailure Off
Contexte:r�pertoire, .htaccess
Statut:Base
Module:mod_authz_core
Compatibilit�:Disponible depuis la version 2.3.11 d'Apache HTTPD

Par d�faut, si l'authentification r�ussit, alors que l'autorisation est refus�e, Apache HTTPD renvoie un code de r�ponse HTTP '401 UNAUTHORIZED'. En g�n�ral, les navigateurs proposent alors une nouvelle fois � l'utilisateur la bo�te de dialogue de saisie du mot de passe, ce qui n'est pas toujours souhaitable. La directive AuthzSendForbiddenOnFailure permet de changer le code de r�ponse en '403 FORBIDDEN'.

Avertissement de s�curit�

La modification de la r�ponse en cas de refus d'autorisation diminue la s�curit� du mot de passe, car elle indique � un �ventuel attaquant que le mot de passe qu'il a saisi �tait correct.

top

Require Directive

Description:V�rifie si un utilisateur authentifi� a une autorisation d'acc�s accord�e par un fournisseur d'autorisation.
Syntaxe:Require [not] nom-entit� [nom-entit�] ...
Contexte:r�pertoire, .htaccess
AllowOverride:AuthConfig
Statut:Base
Module:mod_authz_core

Cette directive permet de v�rifier si un utilisateur authentifi� a l'autorisation d'acc�s accord�e pour un certain fournisseur d'autorisation et en tenant compte de certaines restrictions. mod_authz_core met � disposition les fournisseurs d'autorisation g�n�riques suivants :

Require all granted
L'acc�s est autoris� sans restriction.
Require all denied
L'acc�s est syst�matiquement refus�.
Require env env-var [env-var] ...
L'acc�s n'est autoris� que si l'une au moins des variables d'environnement sp�cifi�es est d�finie.
Require method http-method [http-method] ...
L'acc�s n'est autoris� que pour les m�thodes HTTP sp�cifi�es.
Require expr expression
L'acc�s est autoris� si expression est �valu� � vrai.

Voici quelques exemples de syntaxes autoris�es par mod_authz_user, mod_authz_host et mod_authz_groupfile :

Require user identifiant utilisateur [identifiant utilisateur] ...
Seuls les utilisateurs sp�cifi�s auront acc�s � la ressource.
Require group nom groupe [nom groupe] ...
Seuls les utilisateurs appartenant aux groupes sp�cifi�s auront acc�s � la ressource.
Require valid-user
Tous les utilisateurs valides auront acc�s � la ressource.
Require ip 10 172.20 192.168.2
Les clients dont les adresses IP font partie des tranches sp�cifi�es auront acc�s � la ressource.

D'autres modules d'autorisation comme mod_authnz_ldap, mod_authz_dbm, mod_authz_dbd, mod_authz_owner et mod_ssl impl�mentent des options de la directive Require.

Pour qu'une configuration d'authentification et d'autorisation fonctionne correctement, la directive Require doit �tre accompagn�e dans la plupart des cas de directives AuthName, AuthType et AuthBasicProvider ou AuthDigestProvider, ainsi que de directives telles que AuthUserFile et AuthGroupFile (pour la d�finition des utilisateurs et des groupes). Exemple :

AuthType Basic
AuthName "Restricted Resource"
AuthBasicProvider file
AuthUserFile /web/users
AuthGroupFile /web/groups
Require group admin
    

Les contr�les d'acc�s appliqu�s de cette mani�re sont effectifs pour toutes les m�thodes. C'est d'ailleurs ce que l'on souhaite en g�n�ral. Si vous voulez n'appliquer les contr�les d'acc�s qu'� certaines m�thodes, tout en laissant les autres m�thodes sans protection, placez la directive Require dans une section <Limit>.

Le r�sultat de la directive Require peut �tre invers� en utilisant l'option not. Comme dans le cas de l'autre directive d'autorisation invers�e <RequireNone>, si la directive Require est invers�e, elle ne peut qu'�chouer ou produire un r�sultat neutre ; elle ne peut donc alors pas autoriser une requ�te de mani�re ind�pendante.

Dans l'exemple suivant, tous les utilisateurs appartenant aux groupes alpha et beta ont l'autorisation d'acc�s, � l'exception de ceux appartenant au groupe reject.

<Directory /www/docs>
    <RequireAll>
        Require group alpha beta
        Require not group reject
    </RequireAll>
</Directory>
    

Lorsque plusieurs directives Require sont plac�es dans une m�me section de configuration, et ne se trouvent pas dans une autre directive d'autorisation comme <RequireAll>, elles sont implicitement contenues dans une directive <RequireAny>. Ainsi, la premi�re directive Require qui autorise l'acc�s � un utilisateur autorise l'acc�s pour l'ensemble de la requ�te, et les directives Require suivantes sont ignor�es.

Avertissement � propos de la s�curit�

Prettez une attention particuli�re aux directives d'autorisation d�finies au sein des sections Location qui se chevauchent avec des contenus servis depuis le syst�me de fichiers. Par d�faut, les configurations d�finies dans ces sections l'emportent sur les configurations d'autorisations d�finies au sein des sections Directory et Files sections.

La directive AuthMerging permet de contr�ler la mani�re selon laquelle les configurations d'autorisations sont fusionn�es au sein des sections pr�cit�es.

Voir aussi

top

<RequireAll> Directive

Description:Regroupe plusieurs directives d'autorisation dont aucune ne doit �chouer et dont au moins une doit retourner un r�sultat positif pour que la directive globale retourne elle-m�me un r�sultat positif.
Syntaxe:<RequireAll> ... </RequireAll>
Contexte:r�pertoire, .htaccess
AllowOverride:AuthConfig
Statut:Base
Module:mod_authz_core

Les balises <RequireAll> et </RequireAll> permettent de regrouper des directives d'autorisation dont aucune ne doit �chouer, et dont au moins une doit retourner un r�sultat positif pour que la directive <RequireAll> retourne elle-m�me un r�sultat positif.

Si aucune des directives contenues dans la directive <RequireAll> n'�choue, et si au moins une retourne un r�sultat positif, alors la directive <RequireAll> retourne elle-m�me un r�sultat positif. Si aucune ne retourne un r�sultat positif, et si aucune n'�choue, la directive globale retourne un r�sultat neutre. Dans tous les autres cas, elle �choue.

Voir aussi

top

<RequireAny> Directive

Description:Regroupe des directives d'autorisation dont au moins une doit retourner un r�sultat positif pour que la directive globale retourne elle-m�me un r�sultat positif.
Syntaxe:<RequireAny> ... </RequireAny>
Contexte:r�pertoire, .htaccess
AllowOverride:AuthConfig
Statut:Base
Module:mod_authz_core

Les balises <RequireAny> et </RequireAny> permettent de regrouper des directives d'autorisation dont au moins une doit retourner un r�sultat positif pour que la directive <RequireAny> retourne elle-m�me un r�sultat positif.

Si une ou plusieurs directives contenues dans la directive <RequireAny> retournent un r�sultat positif, alors la directive <RequireAny> retourne elle-m�me un r�sultat positif. Si aucune ne retourne un r�sultat positif et aucune n'�choue, la directive globale retourne un r�sultat neutre. Dans tous les autres cas, elle �choue.

Comme les directives d'autorisation invers�es sont incapables de retourner un r�sultat positif, elles ne peuvent pas impacter de mani�re significative le r�sultat d'une directive <RequireAny> (elles pourraient tout au plus faire �chouer la directive dans le cas o� elles �choueraient elles-m�mes, et o� toutes les autres directives retourneraient un r�sultat neutre). C'est pourquoi il n'est pas permis d'utiliser les directives d'autorisation invers�es dans une directive <RequireAny>.

Voir aussi

top

<RequireNone> Directive

Description:Regroupe des directives d'autorisation dont aucune ne doit retourner un r�sultat positif pour que la directive globale n'�choue pas.
Syntaxe:<RequireNone> ... </RequireNone>
Contexte:r�pertoire, .htaccess
AllowOverride:AuthConfig
Statut:Base
Module:mod_authz_core

Les balises <RequireNone> et </RequireNone> permettent de regrouper des directives d'autorisation dont aucune ne doit retourner un r�sultat positif pour que la directive <RequireNone> n'�choue pas.

Si une ou plusieurs directives contenues dans la directive <RequireNone> retournent un r�sultat positif, la directive <RequireNone> �chouera. Dans tous les autres cas, cette derni�re retournera un r�sultat neutre. Ainsi, comme pour la directive d'autorisation invers�e Require not, elle ne peut jamais autoriser une requ�te de mani�re ind�pendante car elle ne pourra jamais retourner un r�sultat positif. Par contre, on peut l'utiliser pour restreindre l'ensemble des utilisateurs autoris�s � acc�der � une ressource.

Comme les directives d'autorisation invers�es sont incapables de retourner un r�sultat positif, elles ne peuvent pas impacter de mani�re significative le r�sultat d'une directive <RequireNone>. C'est pourquoi il n'est pas permis d'utiliser les directives d'autorisation invers�es dans une directive <RequireNone>.

Voir aussi

Langues Disponibles:  en  |  fr 

top

Commentaires

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.