mirror of
https://github.com/apache/httpd.git
synced 2025-04-18 22:24:07 +03:00
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1888302 13f79535-47bb-0310-9956-ffa450edef68
697 lines
29 KiB
Plaintext
697 lines
29 KiB
Plaintext
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
|
|
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
|
|
<!-- English Revision:1888002 -->
|
|
<!-- French translation : Lucien GENTIS -->
|
|
<!-- Reviewed by : Vincent Deffontaines -->
|
|
|
|
<!--
|
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
|
contributor license agreements. See the NOTICE file distributed with
|
|
this work for additional information regarding copyright ownership.
|
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
|
(the "License"); you may not use this file except in compliance with
|
|
the License. You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
-->
|
|
|
|
<modulesynopsis metafile="mod_authz_core.xml.meta">
|
|
|
|
<name>mod_authz_core</name>
|
|
<description>Socle d'autorisation</description>
|
|
<status>Base</status>
|
|
<sourcefile>mod_authz_core.c</sourcefile>
|
|
<identifier>authz_core_module</identifier>
|
|
<compatibility>Disponible depuis la version 2.3
|
|
d'Apache HTTPD</compatibility>
|
|
|
|
<summary>
|
|
<p>Ce module fournit un socle de fonctionnalités d'autorisation
|
|
permettant d'accorder ou refuser l'accès à certaines zones du site
|
|
web aux utilisateurs authentifiés. <module>mod_authz_core</module>
|
|
donne la possibilité d'enregistrer divers fournisseurs
|
|
d'autorisation. Il est en général utilisé avec un module fournisseur
|
|
d'authentification comme <module>mod_authn_file</module>, et un
|
|
module d'autorisation comme <module>mod_authz_user</module>. Il
|
|
permet aussi l'application d'une logique élaborée au déroulement du
|
|
processus d'autorisation.</p>
|
|
</summary>
|
|
|
|
<section id="logic"><title>Conteneurs d'autorisation</title>
|
|
|
|
<p>Les directives de conteneur d'autorisation <directive
|
|
module="mod_authz_core" type="section">RequireAll</directive>,
|
|
<directive module="mod_authz_core"
|
|
type="section">RequireAny</directive> et <directive
|
|
module="mod_authz_core" type="section">RequireNone</directive>
|
|
peuvent être combinées entre elles et avec la directive <directive
|
|
module="mod_authz_core">Require</directive> pour construire une
|
|
logique d'autorisation complexe.</p>
|
|
|
|
<p>L'exemple ci-dessous illustre la logique d'autorisation suivante.
|
|
Pour pouvoir accéder à la ressource, l'utilisateur doit être
|
|
l'utilisateur <code>superadmin</code>, ou appartenir aux deux
|
|
groupes LDAP <code>admins</code> et <code>Administrateurs</code> et
|
|
soit appartenir au groupe <code>ventes</code>, soit avoir
|
|
<code>ventes</code> comme valeur de l'attribut LDAP
|
|
<code>dept</code>. De plus, pour pouvoir accéder à la ressource,
|
|
l'utilisateur ne doit appartenir ni au groupe <code>temps</code>, ni
|
|
au groupe LDAP <code>Employés temporaires</code>.</p>
|
|
|
|
<highlight language="config">
|
|
<Directory "/www/mydocs">
|
|
<RequireAll>
|
|
<RequireAny>
|
|
Require user superadmin
|
|
<RequireAll>
|
|
Require group admins
|
|
Require ldap-group "cn=Administrateurs,o=Airius"
|
|
<RequireAny>
|
|
Require group ventes
|
|
Require ldap-attribute dept="ventes"
|
|
</RequireAny>
|
|
</RequireAll>
|
|
</RequireAny>
|
|
<RequireNone>
|
|
Require group temps
|
|
Require ldap-group "cn=Employés temporaires,o=Airius"
|
|
</RequireNone>
|
|
</RequireAll>
|
|
</Directory>
|
|
</highlight>
|
|
</section>
|
|
|
|
<section id="requiredirectives"><title>Les directives Require</title>
|
|
|
|
<p>Le module <module>mod_authz_core</module> met à disposition des
|
|
fournisseurs d'autorisation génériques utilisables avec la directive
|
|
<directive module="mod_authz_core">Require</directive>.</p>
|
|
|
|
<section id="reqenv"><title>Require env</title>
|
|
|
|
<p>Le fournisseur <code>env</code> permet de contrôler l'accès au
|
|
serveur en fonction de l'existence d'une <a
|
|
href="../env.html">variable d'environnement</a>. Lorsque <code>Require
|
|
env <var>env-variable</var></code> est spécifié, la requête se voit
|
|
autoriser l'accès si la variable d'environnement
|
|
<var>env-variable</var> 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 <module>mod_setenvif</module>. 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
|
|
<code>User-Agent</code> (type de navigateur), <code>Referer</code>,
|
|
entre autres.</p>
|
|
|
|
<highlight language="config">
|
|
SetEnvIf User-Agent "^KnockKnock/2\.0" let_me_in
|
|
<Directory "/docroot">
|
|
Require env let_me_in
|
|
</Directory>
|
|
</highlight>
|
|
|
|
<p>Avec cet exemple, les navigateurs dont la chaîne user-agent
|
|
commence par <code>KnockKnock/2.0</code> se verront autoriser
|
|
l'accès, alors que tous les autres seront rejetés.</p>
|
|
|
|
<p>Lorsque le serveur cherche un chemin via une <glossary
|
|
ref="subrequest">sous-requête</glossary> interne (par exemple la
|
|
recherche d'un <directive
|
|
module="mod_dir">DirectoryIndex</directive>), ou lorsqu'il génère un
|
|
listing du contenu d'un répertoire via le module
|
|
<module>mod_autoindex</module>, 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 <module>mod_setenvif</module> prend
|
|
part, les directives <directive
|
|
module="mod_setenvif">SetEnvIf</directive> ne sont pas évaluées
|
|
séparément dans la sous-requête.</p>
|
|
|
|
</section>
|
|
|
|
<section id="reqall"><title>Require all</title>
|
|
|
|
<p>Le fournisseur <code>all</code> 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.</p>
|
|
|
|
<highlight language="config">
|
|
Require all granted
|
|
</highlight>
|
|
|
|
<highlight language="config">
|
|
Require all denied
|
|
</highlight>
|
|
|
|
</section>
|
|
|
|
<section id="reqmethod"><title>Require method</title>
|
|
|
|
<p>Le fournisseur <code>method</code> 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
|
|
<directive module="core">TraceEnable</directive>.</p>
|
|
|
|
<p>Dans l'exemple suivant, seules les méthodes GET, HEAD, POST, et
|
|
OPTIONS sont autorisées :</p>
|
|
|
|
<highlight language="config">
|
|
Require method GET POST OPTIONS
|
|
</highlight>
|
|
|
|
<p>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 :</p>
|
|
|
|
<highlight language="config">
|
|
<RequireAny>
|
|
Require method GET POST OPTIONS
|
|
Require valid-user
|
|
</RequireAny>
|
|
</highlight>
|
|
|
|
</section>
|
|
<section id="reqexpr"><title>Require expr</title>
|
|
|
|
<p>Le fournisseur <code>expr</code> permet d'accorder l'autorisation
|
|
d'accès en fonction d'expressions arbitraires.</p>
|
|
|
|
<highlight language="config">
|
|
Require expr "%{TIME_HOUR} -ge 9 && %{TIME_HOUR} -le 17"
|
|
</highlight>
|
|
|
|
<highlight language="config">
|
|
<RequireAll>
|
|
Require expr "!(%{QUERY_STRING} =~ /secret/)"
|
|
Require expr "%{REQUEST_URI} in { '/example.cgi', '/other.cgi' }"
|
|
</RequireAll>
|
|
</highlight>
|
|
|
|
<highlight language="config">
|
|
Require expr "!(%{QUERY_STRING} =~ /secret/) && %{REQUEST_URI} in { '/example.cgi', '/other.cgi' }"
|
|
</highlight>
|
|
|
|
<p>La syntaxe de l'expression est décrite dans la documentation de <a
|
|
href="../expr.html">ap_expr</a>. Avant la version 2.4.16, les doubles-quotes
|
|
étaient prohibées.</p>
|
|
|
|
<p>Normalement, l'expression est évaluée avant l'authentification.
|
|
Cependant, si l'expression renvoie false et se réfère à la variable
|
|
<code>%{REMOTE_USER}</code>, le processus d'authentification sera
|
|
engagé et l'expression réévaluée.</p>
|
|
|
|
</section>
|
|
|
|
</section>
|
|
|
|
<section id="authzalias"><title>Création des alias du fournisseur
|
|
d'autorisation</title>
|
|
|
|
<p>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 <directive module="mod_authz_core">Require</directive> 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 diverses localisations.
|
|
</p>
|
|
|
|
<section id="example"><title>Exemple</title>
|
|
<p>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 :
|
|
</p>
|
|
|
|
<highlight language="config">
|
|
<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
|
|
|
|
#Opération logique implicite : OU inclusif
|
|
Require ldap-group-alias1
|
|
Require ldap-group-alias2
|
|
</Directory>
|
|
</highlight>
|
|
</section>
|
|
|
|
</section>
|
|
|
|
|
|
<directivesynopsis>
|
|
<name>Require</name>
|
|
<description>Vérifie si un utilisateur authentifié a une
|
|
autorisation d'accès accordée par un fournisseur
|
|
d'autorisation.</description>
|
|
<syntax>Require [not] <var>nom-entité</var> [<var>nom-entité</var>]
|
|
...</syntax>
|
|
<contextlist><context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>AuthConfig</override>
|
|
|
|
<usage>
|
|
<p>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.
|
|
<module>mod_authz_core</module> met à disposition les fournisseurs
|
|
d'autorisation génériques suivants :</p>
|
|
|
|
<dl>
|
|
<dt><code>Require all granted</code></dt>
|
|
<dd>L'accès est autorisé sans restriction.</dd>
|
|
|
|
<dt><code>Require all denied</code></dt>
|
|
<dd>L'accès est systématiquement refusé.</dd>
|
|
|
|
<dt><code>Require env <var>env-var</var> [<var>env-var</var>]
|
|
...</code></dt>
|
|
<dd>L'accès n'est autorisé que si l'une au moins des variables
|
|
d'environnement spécifiées est définie.</dd>
|
|
|
|
<dt><code>Require method <var>http-method</var> [<var>http-method</var>]
|
|
...</code></dt>
|
|
<dd>L'accès n'est autorisé que pour les méthodes HTTP spécifiées.</dd>
|
|
|
|
<dt><code>Require expr <var>expression</var> </code></dt>
|
|
<dd>L'accès est autorisé si <var>expression</var> est évalué à
|
|
vrai.</dd>
|
|
</dl>
|
|
|
|
<p>Voici quelques exemples de syntaxes autorisées par
|
|
<module>mod_authz_user</module>, <module>mod_authz_host</module> et
|
|
<module>mod_authz_groupfile</module> :</p>
|
|
|
|
<dl>
|
|
<dt><code>Require user <var>identifiant utilisateur</var>
|
|
[<var>identifiant utilisateur</var>]
|
|
...</code></dt>
|
|
<dd>Seuls les utilisateurs spécifiés auront accès à la
|
|
ressource.</dd>
|
|
|
|
<dt><code>Require group <var>nom groupe</var> [<var>nom
|
|
groupe</var>]
|
|
...</code></dt>
|
|
<dd>Seuls les utilisateurs appartenant aux groupes spécifiés
|
|
auront accès à la ressource.</dd>
|
|
|
|
<dt><code>Require valid-user</code></dt>
|
|
<dd>Tous les utilisateurs valides auront accès à la
|
|
ressource.</dd>
|
|
|
|
<dt><code>Require ip 10 172.20 192.168.2</code></dt>
|
|
<dd>Les clients dont les adresses IP font partie des tranches
|
|
spécifiées auront accès à la ressource.</dd>
|
|
|
|
<dt><code>Require forward-dns dynamic.example.org</code></dt>
|
|
<dd>Un client dont l'adresse IP est résolue à partir du nom
|
|
dynamic.example.org aura l'autorisation d'accès.
|
|
</dd>
|
|
|
|
</dl>
|
|
|
|
<p>D'autres modules d'autorisation comme
|
|
<module>mod_authnz_ldap</module>, <module>mod_authz_dbm</module>,
|
|
<module>mod_authz_dbd</module>,
|
|
<module>mod_authz_owner</module> et <module>mod_ssl</module>
|
|
implémentent des options de la directive Require.</p>
|
|
|
|
<p>Pour qu'une configuration d'authentification et d'autorisation
|
|
fonctionne correctement, la directive <directive>Require</directive>
|
|
doit être accompagnée dans la plupart des cas de directives <directive
|
|
module="mod_authn_core">AuthName</directive>, <directive
|
|
module="mod_authn_core">AuthType</directive> et <directive
|
|
module="mod_auth_basic">AuthBasicProvider</directive> ou <directive
|
|
module="mod_auth_digest">AuthDigestProvider</directive>, ainsi que
|
|
de directives telles que <directive
|
|
module="mod_authn_file">AuthUserFile</directive> et <directive
|
|
module="mod_authz_groupfile">AuthGroupFile</directive> (pour la
|
|
définition des utilisateurs et des groupes). Exemple :</p>
|
|
|
|
<highlight language="config">
|
|
AuthType Basic
|
|
AuthName "Restricted Resource"
|
|
AuthBasicProvider file
|
|
AuthUserFile "/web/users"
|
|
AuthGroupFile "/web/groups"
|
|
Require group admin
|
|
</highlight>
|
|
|
|
<p>Les contrôles d'accès appliqués de cette manière sont effectifs
|
|
pour <strong>toutes</strong> les méthodes. <strong>C'est d'ailleurs
|
|
ce que l'on souhaite en général.</strong> 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
|
|
<directive>Require</directive> dans une section <directive
|
|
module="core" type="section">Limit</directive>.</p>
|
|
|
|
<p>Le résultat de la directive <directive>Require</directive> peut
|
|
être inversé en utilisant l'option <code>not</code>. Comme dans le
|
|
cas de l'autre directive d'autorisation inversée <directive
|
|
type="section">RequireNone</directive>, si la directive
|
|
<directive>Require</directive> est inversée, elle ne peut qu'échouer
|
|
ou produire un résultat neutre ; elle ne peut donc alors pas
|
|
en soi autoriser une requête.</p>
|
|
|
|
<p>Dans l'exemple suivant, tous les utilisateurs appartenant aux
|
|
groupes <code>alpha</code> et <code>beta</code> ont l'autorisation
|
|
d'accès, à l'exception de ceux appartenant au groupe
|
|
<code>reject</code>.</p>
|
|
|
|
<highlight language="config">
|
|
<Directory "/www/docs">
|
|
<RequireAll>
|
|
Require group alpha beta
|
|
Require not group reject
|
|
</RequireAll>
|
|
</Directory>
|
|
</highlight>
|
|
|
|
<p>Lorsque plusieurs directives <directive>Require</directive> sont
|
|
placées dans une même <a href="../sections.html#merging">section de
|
|
configuration</a>, et ne se trouvent pas dans une autre directive
|
|
d'autorisation comme <directive module="mod_authz_core"
|
|
type="section">RequireAll</directive>, elles sont implicitement
|
|
contenues dans une directive <directive module="mod_authz_core"
|
|
type="section">RequireAny</directive>. Ainsi, la première directive
|
|
<directive>Require</directive> qui autorise l'accès à un utilisateur
|
|
autorise l'accès pour l'ensemble de la requête, et les directives
|
|
<directive>Require</directive> suivantes sont ignorées.</p>
|
|
|
|
<note type="warning"><title>Avertissement à propos de la sécurité</title>
|
|
<p>Prettez une attention particulière aux directives d'autorisation
|
|
définies
|
|
au sein des sections <directive module="core">Location</directive>
|
|
qui se chevauchent avec des contenus servis depuis le système de
|
|
fichiers. Par défaut, les configurations définies dans ces <a
|
|
href="../sections.html#merging">sections</a> l'emportent sur les
|
|
configurations d'autorisations définies au sein des sections
|
|
<directive module="core">Directory</directive> et <directive
|
|
module="core">Files</directive> sections.</p>
|
|
<p>La directive <directive
|
|
module="mod_authz_core">AuthMerging</directive> permet de contrôler
|
|
la manière selon laquelle les configurations d'autorisations sont
|
|
fusionnées au sein des sections précitées.</p>
|
|
</note>
|
|
</usage>
|
|
|
|
|
|
<seealso><a href="../howto/access.html">Tutoriel du contrôle d'accès</a></seealso>
|
|
<seealso><a href="#logic">Conteneurs d'autorisation</a></seealso>
|
|
<seealso><module>mod_authn_core</module></seealso>
|
|
<seealso><module>mod_authz_host</module></seealso>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis type="section">
|
|
<name>RequireAll</name>
|
|
<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.</description>
|
|
<syntax><RequireAll> ... </RequireAll></syntax>
|
|
<contextlist><context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>AuthConfig</override>
|
|
|
|
<usage>
|
|
<p>Les balises <directive type="section">RequireAll</directive> et
|
|
<code></RequireAll></code> 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
|
|
<directive type="section">RequireAll</directive> retourne elle-même
|
|
un résultat positif.</p>
|
|
|
|
<p>Si aucune des directives contenues dans la directive <directive
|
|
type="section">RequireAll</directive> n'échoue, et si au moins une
|
|
retourne un résultat positif, alors la directive <directive
|
|
type="section">RequireAll</directive> 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.</p>
|
|
</usage>
|
|
|
|
<seealso><a href="#logic">Conteneurs d'autorisation</a></seealso>
|
|
<seealso><a href="../howto/auth.html">Authentification, autorisation et
|
|
contrôle d'accès</a></seealso>
|
|
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis type="section">
|
|
<name>RequireAny</name>
|
|
<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.</description>
|
|
<syntax><RequireAny> ... </RequireAny></syntax>
|
|
<contextlist><context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>AuthConfig</override>
|
|
|
|
<usage>
|
|
<p>Les balises <directive type="section">RequireAny</directive> et
|
|
<code></RequireAny></code> permettent de regrouper des
|
|
directives d'autorisation dont au moins une doit retourner un
|
|
résultat positif pour que la directive <directive
|
|
type="section">RequireAny</directive> retourne elle-même un résultat
|
|
positif.</p>
|
|
|
|
<p>Si une ou plusieurs directives contenues dans la directive
|
|
<directive type="section">RequireAny</directive> retournent un
|
|
résultat positif, alors la directive <directive
|
|
type="section">RequireAny</directive> 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.</p>
|
|
|
|
<note>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 <directive
|
|
type="section">RequireAny</directive> (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 <directive
|
|
type="section">RequireAny</directive>.</note>
|
|
</usage>
|
|
|
|
<seealso><a href="#logic">Conteneurs d'autorisation</a></seealso>
|
|
<seealso><a href="../howto/auth.html">Authentification, autorisation et
|
|
contrôle d'accès</a></seealso>
|
|
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis type="section">
|
|
<name>RequireNone</name>
|
|
<description>Regroupe des directives d'autorisation dont aucune ne doit
|
|
retourner un résultat positif pour que la directive globale n'échoue
|
|
pas.</description>
|
|
<syntax><RequireNone> ... </RequireNone></syntax>
|
|
<contextlist><context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>AuthConfig</override>
|
|
|
|
<usage>
|
|
<p>Les balises <directive type="section">RequireNone</directive> et
|
|
<code></RequireNone></code> permettent de regrouper des
|
|
directives d'autorisation dont aucune ne doit retourner un résultat
|
|
positif pour que la directive <directive
|
|
type="section">RequireNone</directive> n'échoue pas.</p>
|
|
|
|
<p>Si une ou plusieurs directives contenues dans la directive
|
|
<directive type="section">RequireNone</directive> retournent un
|
|
résultat positif, la directive <directive
|
|
type="section">RequireNone</directive> échouera. Dans tous les
|
|
autres cas, cette dernière retournera un résultat neutre. Ainsi,
|
|
comme pour la directive d'autorisation inversée <code>Require
|
|
not</code>, elle ne peut jamais en soi autoriser une requête
|
|
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.</p>
|
|
|
|
<note>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 <directive
|
|
type="section">RequireNone</directive>.
|
|
C'est pourquoi il n'est pas permis d'utiliser les directives
|
|
d'autorisation inversées dans une directive <directive
|
|
type="section">RequireNone</directive>.</note>
|
|
</usage>
|
|
|
|
<seealso><a href="#logic">Conteneurs d'autorisation</a></seealso>
|
|
<seealso><a href="../howto/auth.html">Authentification, autorisation et
|
|
contrôle d'accès</a></seealso>
|
|
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>AuthMerging</name>
|
|
<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.</description>
|
|
<syntax>AuthMerging Off | And | Or</syntax>
|
|
<default>AuthMerging Off</default>
|
|
<contextlist><context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>AuthConfig</override>
|
|
|
|
<usage>
|
|
<p>Lorsque l'autorisation est activée, elle est normalement héritée
|
|
par chaque <a href="../sections.html#merging">section de
|
|
configuration</a> 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
|
|
<code>AuthMerging Off</code>.</p>
|
|
|
|
<p>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, <code>And</code> et <code>Or</code>.</p>
|
|
|
|
<p>Lorsqu'une section de configuration contient <code>AuthMerging
|
|
And</code> ou <code>AuthMerging Or</code>, 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
|
|
<directive module="mod_authz_core"
|
|
type="section">RequireAll</directive> ou <directive
|
|
module="mod_authz_core" type="section">RequireAny</directive>.</p>
|
|
|
|
<note>La définition de la directive
|
|
<directive>AuthMerging</directive> ne concerne que la section de
|
|
configuration dans laquelle elle apparaît. Dans l'exemple suivant,
|
|
seuls les utilisateurs appartenant au groupe <code>alpha</code> sont
|
|
autorisés à accéder à <code>/www/docs</code>. Les utilisateurs
|
|
appartenant au groupe <code>alpha</code> ou au groupe
|
|
<code>beta</code> sont autorisés à accéder à
|
|
<code>/www/docs/ab</code>. Cependant, la définition implicite à
|
|
<code>Off</code> de la directive <directive>AuthMerging</directive>
|
|
s'applique à la section de configuration <directive type="section"
|
|
module="core">Directory</directive> concernant le répertoire
|
|
<code>/www/docs/ab/gamma</code>, 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 <code>gamma</code> sont autorisés à accéder à
|
|
<code>/www/docs/ab/gamma</code>.</note>
|
|
|
|
<highlight language="config">
|
|
<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>
|
|
</highlight>
|
|
</usage>
|
|
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis type="section">
|
|
<name>AuthzProviderAlias</name>
|
|
<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é</description>
|
|
<syntax><AuthzProviderAlias <var>baseProvider Alias Require-Parameters</var>>
|
|
... </AuthzProviderAlias>
|
|
</syntax>
|
|
<contextlist><context>server config</context>
|
|
</contextlist>
|
|
|
|
<usage>
|
|
<p>Les balises <directive
|
|
type="section">AuthzProviderAlias</directive> et
|
|
<code></AuthzProviderAlias></code> permettent de regrouper des
|
|
directives d'autorisation auxquelles on pourra faire référence à
|
|
l'aide de l'alias spécifié dans une directive <directive
|
|
module="mod_authz_core">Require</directive>.</p>
|
|
|
|
<p>Si <var>Require-Parameters</var> comporte plusieurs paramètres, la liste
|
|
de ces derniers doit être entourée de guillemets. Dans le cas contraire,
|
|
seul le premier paramètre de la liste sera pris en compte.</p>
|
|
|
|
<highlight language="config">
|
|
# Dans cet exemple, pour que les deux adresses IP soient prises en compte, elles
|
|
# DOIVENT être entourées de guillemets
|
|
<AuthzProviderAlias ip reject-ips "XXX.XXX.XXX.XXX YYY.YYY.YYY.YYY">
|
|
</AuthzProviderAlias>
|
|
|
|
<Directory "/path/to/dir">
|
|
<RequireAll>
|
|
Require not reject-ips
|
|
Require all granted
|
|
</RequireAll>
|
|
</Directory>
|
|
</highlight>
|
|
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>AuthzSendForbiddenOnFailure</name>
|
|
<description>Envoie '403 FORBIDDEN' au lieu de '401 UNAUTHORIZED' si
|
|
l'authentification réussit et si l'autorisation a été refusée.
|
|
</description>
|
|
<syntax>AuthzSendForbiddenOnFailure On|Off</syntax>
|
|
<default>AuthzSendForbiddenOnFailure Off</default>
|
|
<contextlist><context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>AuthConfig</override>
|
|
<compatibility>Disponible depuis la version 2.3.11 d'Apache HTTPD</compatibility>
|
|
|
|
<usage>
|
|
<p>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
|
|
<directive>AuthzSendForbiddenOnFailure</directive> permet de changer
|
|
le code de réponse en '403 FORBIDDEN'.</p>
|
|
|
|
<note type="warning"><title>Avertissement de sécurité</title>
|
|
<p>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.</p>
|
|
</note>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
</modulesynopsis>
|