Serveur Apache HTTP Version 2.4
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 |
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.
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.
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>
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>
Le module mod_authz_core
met � disposition des
fournisseurs d'autorisation g�n�riques utilisables avec la directive
Require
.
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.
Lorsque le serveur cherche un chemin via une sous-requ�te interne (par exemple la
recherche d'un DirectoryIndex
), ou lorsqu'il g�n�re un
listing du contenu d'un r�pertoire via le module
mod_autoindex
, la sous-requ�te n'h�rite pas des
variables d'environnement sp�cifiques � la requ�te. En outre, � cause
des phases de l'API auxquelles mod_setenvif
prend
part, les directives SetEnvIf
ne sont pas �valu�es
s�par�ment dans la sous-requ�te.
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
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>
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.
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>
.
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>
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
.
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'.
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.
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
Require all denied
Require env env-var [env-var]
...
Require method http-method [http-method]
...
Require expr expression
Voici quelques exemples de syntaxes autoris�es par
mod_authz_user
, mod_authz_host
et
mod_authz_groupfile
:
Require user identifiant utilisateur
[identifiant utilisateur]
...
Require group nom groupe [nom
groupe]
...
Require valid-user
Require ip 10 172.20 192.168.2
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.
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.
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.
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.
<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>
.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.
<RequireNone>
.
C'est pourquoi il n'est pas permis d'utiliser les directives
d'autorisation invers�es dans une directive <RequireNone>
.