| <?xml version="1.0"?> | 
 | <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> | 
 | <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?> | 
 | <!-- English Revision: 1793934 --> | 
 | <!-- French translation : Lucien GENTIS --> | 
 |  | 
 | <!-- | 
 |  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_session_dbd.xml.meta"> | 
 |  | 
 | <name>mod_session_dbd</name> | 
 | <description>Support des session basé sur DBD/SQL</description> | 
 | <status>Extension</status> | 
 | <sourcefile>mod_session_dbd.c</sourcefile> | 
 | <identifier>session_dbd_module</identifier> | 
 | <compatibility>Disponible depuis la version 2.3 d'Apache</compatibility> | 
 |  | 
 | <summary> | 
 |     <note type="warning"><title>Avertissement</title> | 
 |       <p>Les modules de session font usage des cookies HTTP, et peuvent | 
 |       à ce titre être victimes d'attaques de type Cross Site Scripting, | 
 |       ou divulguer des informations à caractère privé aux clients. | 
 |       Veuillez vous assurer que les risques ainsi encourus ont été pris | 
 |       en compte avant d'activer le support des sessions sur votre | 
 |       serveur.</p> | 
 |     </note> | 
 |  | 
 |     <p>Ce sous-module du module <module>mod_session</module> fournit le | 
 |     support du stockage des sessions utilisateur dans une base de | 
 |     données SQL en utilisant le module <module>mod_dbd</module>.</p> | 
 |  | 
 |     <p>Les sessions sont soit <strong>anonymes</strong>, et la session | 
 |     est alors identifiée par un UUID unique stocké dans un cookie au | 
 |     niveau du navigateur, soit <strong>propres à l'utilisateur</strong>, | 
 |     et le session est alors identifiée par l'identifiant de | 
 |     l'utilisateur connecté.</p> | 
 |  | 
 |     <p>Les sessions basées sur SQL sont dissimulées au navigateur, et | 
 |     permettent ainsi de préserver la confidentialité sans avoir recours | 
 |     au chiffrement.</p> | 
 |  | 
 |     <p>Plusieurs serveurs web d'une forêt de serveurs peuvent choisir de | 
 |     partager une base de données, et ainsi partager les sessions entre | 
 |     eux.</p> | 
 |  | 
 |     <p>Pour plus de détails à propos de l'interface des sessions, voir | 
 |     la documentation du module <module>mod_session</module>.</p> | 
 |  | 
 | </summary> | 
 | <seealso><module>mod_session</module></seealso> | 
 | <seealso><module>mod_session_crypto</module></seealso> | 
 | <seealso><module>mod_session_cookie</module></seealso> | 
 | <seealso><module>mod_dbd</module></seealso> | 
 |  | 
 |     <section id="dbdconfig"><title>Configuration de DBD</title> | 
 |  | 
 |       <p>Pour que le module <module>mod_session_dbd</module> puisse être | 
 |       configuré pour maintenir une session, il faut tout d'abord | 
 |       configurer le module <module>mod_dbd</module> pour que le serveur | 
 |       puisse exécuter des requêtes vers la base de données.</p> | 
 |  | 
 |       <p>Quatre types de requêtes sont nécessaires pour maintenir une | 
 |       session, sélectionner ou mettre à jour une session existante, | 
 |       insérer une nouvelle session et supprimer une session vide ou | 
 |       arrivée à expiration. Ces requêtes sont configurées comme dans | 
 |       l'exemple suivant :</p> | 
 |  | 
 |       <example><title>Exemple de configuration de DBD</title> | 
 |         <highlight language="config"> | 
 | DBDriver pgsql | 
 | DBDParams "dbname=apachesession user=apache password=xxxxx host=localhost" | 
 | DBDPrepareSQL "delete from session where key = %s" deletesession | 
 | DBDPrepareSQL "update session set value = %s, expiry = %lld, key = %s where key = %s" updatesession | 
 | DBDPrepareSQL "insert into session (value, expiry, key) values (%s, %lld, %s)" insertsession | 
 | DBDPrepareSQL "select value from session where key = %s and (expiry = 0 or expiry > %lld)" selectsession | 
 | DBDPrepareSQL "delete from session where expiry != 0 and expiry < %lld" cleansession | 
 |     </highlight> | 
 |       </example> | 
 |  | 
 |     </section> | 
 |  | 
 |     <section id="anonymous"><title>Sessions anonymes</title> | 
 |  | 
 |       <p>Les sessions anonymes sont identifiées par un UUID unique, et | 
 |       stockées dans un cookie au niveau du navigateur. Cette méthode est | 
 |       similaire à celle utilisée par la plupart des serveurs | 
 |       d'applications pour stocker les informations de session.</p> | 
 |  | 
 |       <p>Pour créer une session anonyme, la stocker dans une table de | 
 |       base de donnée postgres nommée <var>apachesession</var>, et | 
 |       sauvegarder l'identifiant de session dans un cookie nommé | 
 |       <var>session</var>, configurez la session comme suit :</p> | 
 |  | 
 |       <example><title>Session anonyme basée sur SQL</title> | 
 |         <highlight language="config"> | 
 | Session On | 
 | SessionDBDCookieName session path=/ | 
 |         </highlight> | 
 |       </example> | 
 |  | 
 |       <p>Pour plus d'exemples sur la manière dont une application CGI | 
 |       peut accéder aux informations de session, voir la section exemples | 
 |       de la documentation du module <module>mod_session</module>.</p> | 
 |  | 
 |       <p>Pour des détails sur la manière dont une session peut être | 
 |       utilisée pour stocker des informations de type nom | 
 |       d'utilisateur/mot de passe, voir la documentation du module | 
 |       <module>mod_auth_form</module>.</p> | 
 |  | 
 |     </section> | 
 |  | 
 |     <section id="peruser"><title>Sessions propres à un | 
 |     utilisateur</title> | 
 |  | 
 |       <p>Les sessions propres à un utilisateur sont identifiées par le | 
 |       nom de l'utilisateur authentifié avec succès. Ceci permet | 
 |       d'assurer une confidentialité optimale, car aucun traitement | 
 |       externe à la session n'existe en dehors du contexte | 
 |       authentifié.</p> | 
 |  | 
 |       <p>Les sessions propres à un utilisateur ne fonctionnent que dans | 
 |       un environnement d'authentification correctement configuré, qu'il | 
 |       s'agisse d'une authentification de base, à base de condensés | 
 |       (digest) ou de certificats client SSL. Suite à des limitations | 
 |       dues à des dépendances mutuelles, les sessions propres à un | 
 |       utilisateur ne peuvent pas être utilisées pour stocker les données | 
 |       d'authentification en provenance d'un module comme | 
 |       <module>mod_auth_form</module>.</p> | 
 |  | 
 |       <p>Pour créer une session propre à un utilisateur, la stocker dans | 
 |       une table de base de données postgres nommée | 
 |       <var>apachesession</var>, avec comme clé de session l'identifiant | 
 |       utilisateur, ajoutez les lignes suivantes :</p> | 
 |  | 
 |       <example><title>Session propre à un utilisateur basée sur SQL</title> | 
 |         <highlight language="config"> | 
 | Session On | 
 | SessionDBDPerUser On | 
 |         </highlight> | 
 |       </example> | 
 |  | 
 |     </section> | 
 |  | 
 |     <section id="housekeeping"><title>Nettoyage de la base de | 
 |     données</title> | 
 |       <p>Avec le temps, la base de données va commencer à accumuler des | 
 |       sessions expirées. Pour le moment, le module | 
 |       <module>mod_session_dbd</module> n'est pas en mesure de gérer | 
 |       automatiquement l'expiration des sessions.</p> | 
 |  | 
 |       <note type="warning"><title>Avertissement</title> | 
 |       <p>L'administrateur devra mettre en oeuvre un traitement externe | 
 |       via cron pour nettoyer les sessions expirées.</p> | 
 |       </note> | 
 |  | 
 |     </section> | 
 |  | 
 | <directivesynopsis> | 
 | <name>SessionDBDCookieName</name> | 
 | <description>Nom et attributs du cookie RFC2109 qui contient | 
 | l'identifiant de session</description> | 
 | <syntax>SessionDBDCookieName <var>nom</var> <var>attributs</var></syntax> | 
 | <default>none</default> | 
 | <contextlist><context>server config</context> | 
 | <context>virtual host</context> | 
 | <context>directory</context> | 
 | <context>.htaccess</context> | 
 | </contextlist> | 
 | <override>AuthConfig</override> | 
 |  | 
 | <usage> | 
 |     <p>La directive <directive>SessionDBDCookieName</directive> permet | 
 |     de spécifier le nom et les attributs optionnels d'un cookie | 
 |     compatible RFC2109 qui contiendra l'identifiant de session. Les | 
 |     cookies RFC2109 sont définis à l'aide de l'en-tête HTTP | 
 |     <code>Set-Cookie</code>. | 
 |     </p> | 
 |  | 
 |     <p>Une liste optionnelle d'attributs peut être spécifiée pour ce | 
 |     cookie, comme dans l'exemple ci-dessous. Ces attributs sont insérés | 
 |     dans le cookie tel quel, et ne sont pas interprétés par Apache. | 
 |     Assurez-vous que vos attributs sont définis correctement selon la | 
 |     spécification des cookies. | 
 |     </p> | 
 |  | 
 |     <example><title>Cookie avec attributs</title> | 
 |       <highlight language="config"> | 
 | Session On | 
 | SessionDBDCookieName session path=/private;domain=example.com;httponly;secure;version=1; | 
 |       </highlight> | 
 |     </example> | 
 |  | 
 | </usage> | 
 | </directivesynopsis> | 
 |  | 
 | <directivesynopsis> | 
 | <name>SessionDBDCookieName2</name> | 
 | <description>Nom et attributs du cookie RFC2965 qui contient | 
 | l'identifiant de session</description> | 
 | <syntax>SessionDBDCookieName2 <var>nom</var> <var>attributs</var></syntax> | 
 | <default>none</default> | 
 | <contextlist><context>server config</context> | 
 | <context>virtual host</context> | 
 | <context>directory</context> | 
 | <context>.htaccess</context> | 
 | </contextlist> | 
 | <override>AuthConfig</override> | 
 |  | 
 | <usage> | 
 |     <p>La directive <directive>SessionDBDCookieName2</directive> permet | 
 |     de spécifier le nom et les attributs optionnels d'un cookie | 
 |     compatible RFC2965 qui contiendra l'identifiant de session. Les | 
 |     cookies RFC2965 sont définis à l'aide de l'en-tête HTTP | 
 |     <code>Set-Cookie2</code>. | 
 |     </p> | 
 |  | 
 |     <p>Une liste optionnelle d'attributs peut être spécifiée pour ce | 
 |     cookie, comme dans l'exemple ci-dessous. Ces attributs sont insérés | 
 |     dans le cookie tel quel, et ne sont pas interprétés par Apache. | 
 |     Assurez-vous que vos attributs sont définis correctement selon la | 
 |     spécification des cookies. | 
 |     </p> | 
 |  | 
 |     <example><title>Cookie2 avec attributs</title> | 
 |       <highlight language="config"> | 
 | Session On | 
 | SessionDBDCookieName2 session path=/private;domain=example.com;httponly;secure;version=1; | 
 |       </highlight> | 
 |     </example> | 
 |  | 
 | </usage> | 
 | </directivesynopsis> | 
 |  | 
 | <directivesynopsis> | 
 | <name>SessionDBDCookieRemove</name> | 
 | <description>Détermine si les cookies de session doivent être supprimés | 
 | des en-têtes HTTP entrants</description> | 
 | <syntax>SessionDBDCookieRemove On|Off</syntax> | 
 | <default>SessionDBDCookieRemove On</default> | 
 | <contextlist><context>server config</context> | 
 | <context>virtual host</context> | 
 | <context>directory</context> | 
 | <context>.htaccess</context> | 
 | </contextlist> | 
 | <override>AuthConfig</override> | 
 |  | 
 | <usage> | 
 |     <p>La directive <directive>SessionDBDCookieRemove</directive> permet | 
 |     de déterminer si les cookies contenant l'identifiant de session | 
 |     doivent être supprimés des en-têtes pendant le traitement de la | 
 |     requête.</p> | 
 |  | 
 |     <p>Dans le cas d'un mandataire inverse où le serveur Apache sert de | 
 |     frontal à un serveur d'arrière-plan, révéler le contenu du cookie de | 
 |     session à ce dernier peut conduire à une violation de la | 
 |     confidentialité. A ce titre, si cette directive est définie à "on", | 
 |     le cookie de session sera supprimé des en-têtes HTTP entrants.</p> | 
 |  | 
 | </usage> | 
 | </directivesynopsis> | 
 |  | 
 | <directivesynopsis> | 
 | <name>SessionDBDPerUser</name> | 
 | <description>Active une session propre à un utilisateur</description> | 
 | <syntax>SessionDBDPerUser On|Off</syntax> | 
 | <default>SessionDBDPerUser Off</default> | 
 | <contextlist><context>server config</context> | 
 | <context>virtual host</context> | 
 | <context>directory</context> | 
 | <context>.htaccess</context> | 
 | </contextlist> | 
 | <override>AuthConfig</override> | 
 |  | 
 | <usage> | 
 |     <p>La directive <directive>SessionDBDPerUser</directive> permet | 
 |     d'activer une session propre à un utilisateur, dont la clé sera le | 
 |     nom de l'utilisateur connecté. Si l'utilisateur n'est pas connecté, | 
 |     la directive sera ignorée.</p> | 
 |  | 
 | </usage> | 
 | </directivesynopsis> | 
 |  | 
 | <directivesynopsis> | 
 | <name>SessionDBDSelectLabel</name> | 
 | <description>La requête SQL à utiliser pour sélectionner des sessions | 
 | dans la base de données</description> | 
 | <syntax>SessionDBDSelectLabel <var>étiquette</var></syntax> | 
 | <default>SessionDBDSelectLabel selectsession</default> | 
 | <contextlist><context>server config</context> | 
 | <context>virtual host</context> | 
 | <context>directory</context> | 
 | <context>.htaccess</context> | 
 | </contextlist> | 
 | <override>AuthConfig</override> | 
 |  | 
 | <usage> | 
 |     <p>La directive <directive>SessionDBDSelectLabel</directive> permet | 
 |     de définir l'étiquette de la requête de sélection par défaut à | 
 |     utiliser pour charger une session. Cette étiquette doit avoir été | 
 |     définie au préalable via une directive <directive | 
 |     module="mod_dbd">DBDPrepareSQL</directive>.</p> | 
 |  | 
 | </usage> | 
 | </directivesynopsis> | 
 |  | 
 | <directivesynopsis> | 
 | <name>SessionDBDInsertLabel</name> | 
 | <description>La requête SQL à utiliser pour insérer des sessions dans la | 
 | base de données</description> | 
 | <syntax>SessionDBDInsertLabel <var>étiquette</var></syntax> | 
 | <default>SessionDBDInsertLabel insertsession</default> | 
 | <contextlist><context>server config</context> | 
 | <context>virtual host</context> | 
 | <context>directory</context> | 
 | <context>.htaccess</context> | 
 | </contextlist> | 
 | <override>AuthConfig</override> | 
 |  | 
 | <usage> | 
 |     <p>La directive <directive>SessionDBDInsertLabel</directive> permet | 
 |     de définir l'étiquette de la requête d'insertion par défaut à | 
 |     charger dans une session. Cette | 
 |     étiquette doit avoir été définie au préalable via une directive | 
 |     <directive module="mod_dbd">DBDPrepareSQL</directive>.</p> | 
 |  | 
 |     <p>Si une tentative de mise à jour d'une session ne concerne aucun | 
 |     enregistrement, c'est cette requête qui sera utilisée pour insérer | 
 |     la session dans la base de données.</p> | 
 |  | 
 | </usage> | 
 | </directivesynopsis> | 
 |  | 
 | <directivesynopsis> | 
 | <name>SessionDBDUpdateLabel</name> | 
 | <description>La requête SQL à utiliser pour mettre à jour des sessions | 
 | préexistantes dans la base de données</description> | 
 | <syntax>SessionDBDUpdateLabel <var>étiquette</var></syntax> | 
 | <default>SessionDBDUpdateLabel updatesession</default> | 
 | <contextlist><context>server config</context> | 
 | <context>virtual host</context> | 
 | <context>directory</context> | 
 | <context>.htaccess</context> | 
 | </contextlist> | 
 | <override>AuthConfig</override> | 
 |  | 
 | <usage> | 
 |     <p>La directive <directive>SessionDBDUpdateLabel</directive> permet | 
 |     de définir l'étiquette de la requête de mise à jour par défaut à | 
 |     charger dans une session. Cette | 
 |     étiquette doit avoir été définie au préalable via une directive | 
 |     <directive module="mod_dbd">DBDPrepareSQL</directive>.</p> | 
 |  | 
 |     <p>Si une tentative de mise à jour d'une session ne concerne aucun | 
 |     enregistrement, c'est la requête d'insertion qui sera appelée pour | 
 |     insérer la session dans la base de données. Si la base de données | 
 |     supporte InsertOrUpdate, modifiez cette requête pour effectuer la | 
 |     mise à jour en une seule requête au lieu de deux.</p> | 
 |  | 
 | </usage> | 
 | </directivesynopsis> | 
 |  | 
 | <directivesynopsis> | 
 | <name>SessionDBDDeleteLabel</name> | 
 | <description>La requête SQL à utiliser pour supprimer des sessions de la | 
 | base de données</description> | 
 | <syntax>SessionDBDDeleteLabel <var>étiquette</var></syntax> | 
 | <default>SessionDBDDeleteLabel deletesession</default> | 
 | <contextlist><context>server config</context> | 
 | <context>virtual host</context> | 
 | <context>directory</context> | 
 | <context>.htaccess</context> | 
 | </contextlist> | 
 | <override>AuthConfig</override> | 
 |  | 
 | <usage> | 
 |     <p>La directive  <directive>SessionDBDDeleteLabel</directive> permet | 
 |     de définir l'étiquette de la requête de suppression à utiliser par | 
 |     défaut pour supprimer une session vide ou expirée. Cette | 
 |     étiquette doit avoir été définie au préalable via une directive | 
 |     <directive module="mod_dbd">DBDPrepareSQL</directive>.</p> | 
 |  | 
 | </usage> | 
 | </directivesynopsis> | 
 |  | 
 | </modulesynopsis> |