<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<!--
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      -->
<title>mod_authz_host - Serveur HTTP Apache Version 2.5</title>
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
<script src="../style/scripts/prettify.min.js" type="text/javascript">
</script>

<link href="../images/favicon.ico" rel="shortcut icon" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>
<p class="apache">Serveur HTTP Apache Version 2.5</p>
<img alt="" src="../images/feather.png" /></div>
<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.5</a> &gt; <a href="./">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Module Apache mod_authz_host</h1>
<div class="toplang">
<p><span>Langues Disponibles: </span><a href="../en/mod/mod_authz_host.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/mod/mod_authz_host.html" title="Français">&nbsp;fr&nbsp;</a></p>
</div>
<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Autorisations de groupe basées sur l'hôte (nom ou adresse
IP)</td></tr>
<tr><th><a href="module-dict.html#Status">Statut:</a></th><td>Base</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">Identificateur de Module:</a></th><td>authz_host_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">Fichier Source:</a></th><td>mod_authz_host.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibilité:</a></th><td>Le fournisseur <code>forward-dns</code> est disponible à partir
de la version 2.4.19 du serveur HTTP Apache</td></tr></table>
<h3>Sommaire</h3>

    <p>Les fournisseurs d'autorisation implémentés par le module
    <code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code> sont enregistrés à l'aide de
    la directive <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code>. On peut
    utiliser cette directive à l'intérieur de sections <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code>, <code class="directive"><a href="../mod/core.html#files">&lt;Files&gt;</a></code>, ou <code class="directive"><a href="../mod/core.html#location">&lt;Location&gt;</a></code> ou de fichiers
    <code><a href="core.html#accessfilename">.htaccess</a> </code> pour
    contrôler l'accès à certaines zones du serveur. Le contrôle d'accès
    peut être effectué en fonction du nom d'hôte ou de l'adresse IP.</p>

    <p>En général, les directives de restriction d'accès s'appliquent à
    toutes les méthodes d'accès (<code>GET</code>, <code>PUT</code>,
    <code>POST</code>, etc...). C'est d'ailleurs ce que l'on souhaite
    dans la plupart des cas. Il est cependant possible de ne restreindre
    l'accès que pour certaines méthodes, tout en laissant les autres
    méthodes sans protection, en plaçant les directives dans une section
    <code class="directive"><a href="../mod/core.html#limit">&lt;Limit&gt;</a></code>.</p>
</div>
<div id="quickview"><h3>Sujets</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#requiredirectives">Les directives Require</a></li>
</ul><h3 class="directives">Directives</h3>
<p>Ce module ne fournit aucune directive.</p>
<h3>Traitement des bugs</h3><ul class="seealso"><li><a href="https://www.apache.org/dist/httpd/CHANGES_2.4">Journal des modifications de httpd</a></li><li><a href="https://bz.apache.org/bugzilla/buglist.cgi?bug_status=__open__&amp;list_id=144532&amp;product=Apache%20httpd-2&amp;query_format=specific&amp;order=changeddate%20DESC%2Cpriority%2Cbug_severity&amp;component=mod_authz_host">Problèmes connus</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&amp;component=mod_authz_host">Signaler un bug</a></li></ul><h3>Voir aussi</h3>
<ul class="seealso">
<li><a href="../howto/auth.html">Authentification, autorisation et
contrôle d'accès</a></li>
<li><code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code></li>
<li><a href="#comments_section">Commentaires</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="requiredirectives" id="requiredirectives">Les directives Require</a> <a title="Lien permanent" href="#requiredirectives" class="permalink">&para;</a></h2>

    <p>La directive Apache <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code> est utilisée au cours de
    la phase d'autorisation pour vérifier si un utilisateur se voit
    accorder ou refuser l'accès à une ressource. mod_authz_host fournit
    les types d'autorisation <code>ip</code>, <code>host</code>,
    <code>forward-dns</code> et <code>local</code>. D'autres
    types d'autorisation sont aussi disponibles, mais nécessitent le chargement
    des modules d'autorisation appropriés.</p>

    <p>Ces fournisseurs d'autorisation permettent de déterminer quels
    hôtes peuvent accéder à une zone du serveur. On peut contrôler
    l'accès en fonction du nom d'hôte, de l'adresse IP, ou d'un intervalle
    d'adresses IP.</p>

    <p>A partir de la version 2.4.8, les directives require host
    supportent les <a href="../expr.html">expressions</a>.</p>

<h3><a name="reqip" id="reqip">Require ip</a></h3>

    <p>Le fournisseur <code>ip</code> permet de contrôler l'accès au
    serveur en fonction de l'adresse IP du client distant. Lorsque
    <code>Require ip <var>adresse-ip</var></code> est spécifié, la
    requête est autorisée si l'adresse IP du client distant correspond
    à</p>

    <p>Une adresse IP complète :</p>

    <pre class="prettyprint lang-config">Require ip 10.1.2.3
Require ip 192.168.1.104 192.168.1.205</pre>


    <p>L'adresse IP d'un hôte pour qui l'accès est accordé</p>

    <p>Une adresse IP partielle :</p>

    <pre class="prettyprint lang-config">Require ip 10.1
Require ip 10 172.20 192.168.2</pre>

    <p>Les 1 à 3 premiers octets d'une adresse IP, pour une restriction
    à un sous-réseau.</p>

    <p>Une paire réseau/masque de sous-réseau :</p>

    <pre class="prettyprint lang-config">Require ip 10.1.0.0/255.255.0.0</pre>

    <p>Un réseau a.b.c.d, et un masque de sous-réseau w.x.y.z. pour une
    restriction de sous-réseau plus fine.</p>

    <p>Une spécification CIDR réseau/nnn :</p>

    <pre class="prettyprint lang-config">Require ip 10.1.0.0/16</pre>

    <p>Identique au cas précédent, excepté que le masque de sous-réseau
    représente les nnn premiers bits de poids fort.</p>

    <p>Notez que les trois derniers exemples correspondent exectement au
    même ensemble d'hôtes.</p>

    <p>On peut spécifier des adresses et des sous-réseaux IPv6 comme
    suit :</p>

    <pre class="prettyprint lang-config">Require ip 2001:db8::a00:20ff:fea7:ccea
Require ip 2001:db8:1:1::a
Require ip 2001:db8:2:1::/64
Require ip 2001:db8:3::/48</pre>


    <p>Note: comme les adresses IP sont lues au démarrage, les
    expressions ne sont pas évaluées au moment de la requête.</p>



<h3><a name="reqhost" id="reqhost">Require host</a></h3>

    <p>Le fournisseur <code>host</code> permet de contrôler l'accès au
    serveur en fonction du nom d'hôte du client distant. Lorsque
    <code>Require host <var>nom-hôte</var></code> est spécifié, la
    requête est autorisée si le nom d'hôte correspond à</p>

    <p>Un nom de domaine (éventuellement partiel)</p>

    <pre class="prettyprint lang-config">Require host example.org
Require host .net example.edu</pre>


    <p>Les hôtes dont les noms correspondent ou se terminent par la
    chaîne spécifiée se voient accorder l'accès. Seuls les élément de
    nom de domaine complets sont mis en correspondance ; ainsi,
    l'exemple ci-dessus correspondra à <code>foo.example.org</code>, mais
    ne correspondra pas à <code>fooexample.org</code>. Avec cette
    configuration, Apache va effectuer une double recherche DNS sur
    l'adresse IP du client, sans tenir compte de la définition de la
    directive  <code class="directive"><a href="../mod/core.html#hostnamelookups">HostnameLookups</a></code>. Il
    va effectuer une recherche DNS inverse sur l'adresse IP pour trouver
    le nom d'hôte associé, puis une recherche DNS directe sur le nom
    d'hôte pour vérifier qu'il correspond bien à l'adresse IP originale.
    L'accès ne sera accordé que si le nom d'hôte correspond et si les
    recherches DNS inverse et directe sont cohérentes.</p>


<h3><a name="reqfwddns" id="reqfwddns">Require forward-dns</a></h3>

    <p>Le fournisseur <code>forward-dns</code> permet d'accéder au serveur
    sécurisé en fonction de simples noms d'hôte. Lorsque <code>Require
    forward-dns <var>host-name</var></code> est spécifié, toute adresse IP
    correspondant à <code><var>host-name</var></code> se voit autoriser l'accès.</p>

    <p>A la différence du fournisseur <code>host</code>, ce fournisseur
    n'effectue pas de recherche DNS inverse : il effectue simplement une requête
    DNS directe pour le nom d'hôte spécifié et donne accès au client si son
    adresse IP correspond. Il ne fonctionnera donc qu'avec des noms d'hôte
    complets qui peuvent être résolus par le DNS, et non avec des noms de
    domaine partiels. Par contre, comme le DNS inverse n'est pas sollicité, et
    comme les recherches DNS interviennent au moment du traitement de la requête
    (et non au démarrage), il fonctionnera avec des clients qui utilisent un
    service de DNS dynamique.</p>

    <pre class="prettyprint lang-config">Require forward-dns dynamic.example.org</pre>


    <p>Un client dont l'adresse IP correspond au nom d'hôte
    <code>dynamic.example.org</code> se verra autoriser l'accès.</p>

    <p>Le fournisseur <code>forward-dns</code> est disponible à partir de la
    version 2.4.19 du serveur HTTP Apache.</p>


<h3><a name="reqlocal" id="reqlocal">Require local</a></h3>

    <p>Le fournisseur <code>local</code> autorise l'accès au serveur si
    l'une au moins de ces conditions est satisfaite :</p>

    <ul>
        <li>l'adresse IP du client correspond à 127.0.0.0/8</li>
        <li>l'adresse IP du client est ::1</li>
        <li>les adresses IP du client et du serveur sont identiques</li>
    </ul>

    <p>L'exemple suivant montre une méthode simple pour sélectionner les
    connexions en provenance de l'hôte local :</p>

    <pre class="prettyprint lang-config">Require local</pre>




<h3><a name="proxy" id="proxy">Note concernant la sécurité</a></h3>

    <p>Si le contenu de votre serveur est mandaté, vous devez garder à
    l'esprit que l'adresse client correspondra à l'adresse de votre
    serveur mandataire et non à l'adresse du client, et l'utilisation de
    la directive <code>Require</code> dans ce contexte ne provoquera pas
    forcément l'effet désiré. Voir <code class="module"><a href="../mod/mod_remoteip.html">mod_remoteip</a></code> pour
    une solution possible à ce problème.</p>
    


</div>
</div>
<div class="bottomlang">
<p><span>Langues Disponibles: </span><a href="../en/mod/mod_authz_host.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/mod/mod_authz_host.html" title="Français">&nbsp;fr&nbsp;</a></p>
</div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Commentaires</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed 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 Libera.chat, or sent to our <a href="https://httpd.apache.org/lists.html">mailing lists</a>.</div>
<script type="text/javascript"><!--//--><![CDATA[//><!--
var comments_shortname = 'httpd';
var comments_identifier = 'http://httpd.apache.org/docs/trunk/mod/mod_authz_host.html';
(function(w, d) {
    if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
        d.write('<div id="comments_thread"><\/div>');
        var s = d.createElement('script');
        s.type = 'text/javascript';
        s.async = true;
        s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
        (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
    }
    else {
        d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
    }
})(window, document);
//--><!]]></script></div><div id="footer">
<p class="apache">Copyright 2025 The Apache Software Foundation.<br />Autorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
if (typeof(prettyPrint) !== 'undefined') {
    prettyPrint();
}
//--><!]]></script>
</body></html>