<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2000-2010  Ministere de la culture et de la communication (France), AJLSM
See LICENCE file
-->
<!DOCTYPE webpage PUBLIC "-//Norman Walsh//DTD Website V2.1b1//EN" "../../../dtd/website.dtd" [
<!ENTITY droits SYSTEM "actions_gestion.xml" NDATA XML>
<!ENTITY parametres SYSTEM "actions_parametres.xml" NDATA XML>
<!ENTITY localisation SYSTEM "actions_localisation.xml" NDATA XML>
<!ENTITY sdx_page SYSTEM "actions_generalites.xml#sdx_page" NDATA XML>
<!ENTITY generalites SYSTEM "actions_generalites.xml" NDATA XML>
]>
<webpage id="actions_identification" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:rddl="http://www.rddl.org/" xmlns:xlink="http://www.w3.org/1999/xlink">
  <head>
    <title lang="fr">Identification des utilisateurs</title>
    <titleabbrev lang="fr">Identification</titleabbrev>
    <author lang="fr">
      <firstname>Malo</firstname>
      <surname>Pichot</surname>
      <affiliation>
        <orgname>AJLSM</orgname>
      </affiliation>
    </author>
    <author>
      <firstname>Martin</firstname>
      <surname>Sévigny</surname>
      <affiliation>
        <orgname>AJLSM</orgname>
      </affiliation>
    </author>
    <author lang="fr">
      <firstname>Pierrick</firstname>
      <surname>Brihaye</surname>
    </author>
    <revhistory>
      <revision lang="fr">
        <revnumber>1.0</revnumber>
        <date>2003-06-04</date>
      </revision>
    </revhistory>
  </head>
  <itemizedlist>
    <title>Liste des actions décrites dans cette page :</title>
    <listitem>
      <para> <ulink url="#sdx_login"> <sgmltag class="element">sdx:login</sgmltag></ulink> ; </para>
    </listitem>
    <listitem>
      <para> <ulink url="#sdx_loginsu"> <sgmltag class="element">sdx:loginSu</sgmltag></ulink> ; </para>
    </listitem>
    <listitem>
      <para> <ulink url="#sdx_logout"> <sgmltag>sdx:logout</sgmltag></ulink>.</para>
    </listitem>
  </itemizedlist>
  <section id="concepts" lang="fr">
    <title>Concepts clés</title>
    <para lang="fr">SDX inclut des fonctionnalités de gestion d'utilisateurs et de groupes d'utilisateurs. Nous allons décrire dans cette page les actions permettant à un utilisateur consultant le site de s'identifier (<emphasis role="italic">login</emphasis>) ou de se désidentifier (<emphasis role="italic">logout</emphasis>). </para>
    <para lang="fr">Les actions SDX qui permettent de vérifier l'appartenance de l'utilisateur à un groupe (et ainsi de contrôler les accès aux différentes fonctionnalités de l'application) sont définies dans la section <olink targetdocent="droits">"Gestion des droits"</olink>.</para>
    <para>SDX stocke les informations relatives à l'utilisateur dans un <emphasis>cookie</emphasis> du navigateur. Par défaut, le consultant d'une application SDX est un utilisateur anonyme, mais le développeur d'application peut lui offrir la possibilité de s'identifier pendant toute la durée de la session où jusqu'à ce qu'il se déconnecte.</para>
    <para>Il existe plusieurs classes d'utilisateurs :</para>
    <variablelist>
      <varlistentry>
        <term>Utilisateur anonyme</term>
        <listitem>
          <para>Un simple consultant n'ayant fait aucune démarche d'identification.</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>Utilisateur</term>
        <listitem>
          <para>L'utilisateur lambda d'une application. Il est possible d'intégrer un utilisateur à différents groupes d'utilisateurs, depuis le groupe de simples lecteurs jusqu'au groupe des administrateurs d'une application.</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>Administrateur</term>
        <listitem>
          <para>L'administrateur possède des droits supérieurs à celui du simple utilisateur. Son rôle est d'administrer d'une application : indexer des documents, supprimer des documents, restructurer une application, définir des utilisateurs, etc.</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>Super-utilisateur</term>
        <listitem>
          <para>Le super-utilisateur (<abbrev>SU</abbrev>) administre le serveur SDX qui héberge les applications. Il est important de noter qu'il n'a aucun droit <emphasis>à l'intérieur</emphasis> des applications. Rien n'empêche cependant de définir un utilisateur d'application ayant les mêmes paramètres d'identification que le <abbrev>SU</abbrev>.</para>
        </listitem>
      </varlistentry>
    </variablelist>
    <para>Les utilisateurs sont définis dans le contexte d'une application SDX. Une page XSP s'exécutant toujours dans un contexte d'application, la connexion va normalement s'effectuer sur l'application courante. Il est toutefois possible de connecter un utilisateur à autre application depuis l'application courante.</para>
    <para>Un super-utilisateur ayant un rôle différent de celui d'un utilisateur d'application, son identification doit passer par une action différente (cf. <ulink url="#sdx_loginsu"><sgmltag class="element">sdx:loginSu</sgmltag></ulink>).</para>
  </section>
  <section id="sdx_login" lang="fr">
    <title> <sgmltag>sdx:login</sgmltag> </title>
    <para>Cette action permet de tenter d'authentifier un utilisateur et, en cas de réussite, de le définir comme utilisateur courant. Elle n'a pas d'équivalent dans l'API-URL.</para>
    <table id="sdx_login_description">
      <title>Description</title>
      <tgroup cols="2">
        <colspec colname="col1" colnum="1" colwidth="*"/>
        <colspec colname="col2" colnum="2" colwidth="*"/>
        <tbody>
          <row>
            <entry colname="col1">Code implémentant cette action</entry>
            <entry colname="col2"> <filename class="libraryfile">sdx-actions.xsl</filename> </entry>
          </row>
          <row>
            <entry colname="col1">Contexte d'utilisation</entry>
            <entry colname="col2">N'importe où dans <olink localinfo="sdx_page" targetdocent="generalites"> <sgmltag class="element">sdx:page</sgmltag> </olink>.</entry>
          </row>
          <row>
            <entry colname="col1">Contenu éventuel</entry>
            <entry colname="col2">N'importe quel élément <sgmltag class="element">sdx:*</sgmltag> ou autre. Si l'authentification réussit, les éléments fils seront traités hormis un éventuel sous-élément <olink localinfo="sdx_fallback" targetdocent="parametres"><sgmltag class="element">sdx:fallback</sgmltag></olink>. Réciproquement, si l'authentification échoue, seul l'élément <olink localinfo="sdx_fallback" targetdocent="parametres"><sgmltag class="element">sdx:fallback</sgmltag></olink> sera exécuté.</entry>
          </row>
        </tbody>
      </tgroup>
    </table>
    <table id="sdx_login_param">
      <title>Paramètres spécifiques</title>
      <tgroup cols="3">
        <colspec colname="col1" colnum="1" colwidth="1.60*"/>
        <colspec colname="col2" colnum="2" colwidth="7.12*"/>
        <colspec colname="col3" colnum="3" colwidth="1.00*"/>
        <thead>
          <row>
            <entry colname="col1">Nom</entry>
            <entry colname="col2">Description</entry>
            <entry colname="col3"></entry>
          </row>
        </thead>
        <tbody>
          <row>
            <entry colname="col1"> <sgmltag class="attribute" id="id">id</sgmltag> </entry>
            <entry colname="col2">Le code utilisateur.</entry>
            <entry colname="col3">Obligatoire</entry>
          </row>
          <row>
            <entry colname="col1"> <sgmltag class="attribute" id="pass">pass</sgmltag> </entry>
            <entry colname="col2">Le mot de passe. Les utilisateurs peuvent ne pas avoir de mot de passe.</entry>
            <entry colname="col3">Facultatif</entry>
          </row>
        </tbody>
      </tgroup>
    </table>
    <table id="sdx_login_param_comm">
      <title>Paramètres communs</title>
      <tgroup cols="4">
        <colspec colname="col1" colnum="1" colwidth="1.00*"/>
        <colspec colname="col3" colnum="2" colwidth="3.98*"/>
        <colspec colname="col2" colnum="3" colwidth="2.59*"/>
        <colspec colname="col4" colnum="4" colwidth="1.02*"/>
        <thead>
          <row>
            <entry colname="col1">Nom</entry>
            <entry colname="col3">Description</entry>
            <entry colname="col2">Action de référence</entry>
            <entry colname="col4"></entry>
          </row>
        </thead>
        <tbody>
          <row>
            <entry colname="col1"> <sgmltag class="attribute" id="app">app</sgmltag> </entry>
            <entry colname="col3"> <para>L'identifiant de l'application où est défini l'utilisateur que l'on veut authentifier.</para> <para>Par défaut, il s'agit de l'application où s'exécute la page XSP.</para> </entry>
            <entry colname="col2"> <olink localinfo="sdx_app" targetdocent="localisation"> <sgmltag class="element">sdx:app</sgmltag> </olink> </entry>
            <entry colname="col4">Facultatif</entry>
          </row>
          <row>
            <entry colname="col1"> <sgmltag class="attribute" id="appbypath">appbypath</sgmltag> </entry>
            <entry colname="col3"> <para>Le chemin de l'application.</para> <para>Par défaut, il s'agit de l'application où s'exécute la page XSP.</para> <para>Au cas où les 2 paramètres seraient présents, <ulink url="#app"><sgmltag class="attribute">app</sgmltag></ulink> est prioritaire sur <ulink url="#appbypath"><sgmltag class="attribute">appbypath</sgmltag></ulink>.</para> </entry>
            <entry colname="col2"> <olink localinfo="sdx_app" targetdocent="localisation"> <sgmltag class="element">sdx:app</sgmltag> </olink> </entry>
            <entry colname="col4">Facultatif</entry>
          </row>
        </tbody>
      </tgroup>
    </table>
    <example id="exemple_identification_01" lang="fr">
      <title>Identification depuis un formulaire HTML</title>
      <para>Dans cet exemple, on suppose que la page est exécutée à la suite de la soumission d'un formulaire à deux champs. L'un contient le code utilisateur et a pour nom <literal>code</literal>, l'autre contient le mot de passe et a pour nom <literal>mdp</literal>. L'identification va être tentée pour l'application où s'exécute la page XSP ; un traitement spécifique est prévu en cas d'échec.</para>
      <programlisting> 
&lt;sdx:login idParam="code" passParam="mdp"&gt; 
  &lt;succes_proposer_quelque_chose/&gt; 
  &lt;sdx:fallback&gt; 
    &lt;erreur_proposer_autre_chose/&gt; 
  &lt;/sdx:fallback&gt; 
&lt;/sdx:login&gt;
</programlisting>
    </example>
  </section>
  <section id="sdx_loginsu" lang="fr">
    <title> <sgmltag>sdx:loginSu</sgmltag></title>
    <para>Cette action permet d'authentifier le super-utilisateur (<abbrev>SU</abbrev>) et de le définir comme utilisateur courant.</para>
    <table id="sdx_loginsu_description">
      <title id="description">Description</title>
      <tgroup cols="2">
        <colspec colname="col1" colnum="1" colwidth="*"/>
        <colspec colname="col2" colnum="2" colwidth="*"/>
        <tbody>
          <row>
            <entry colname="col1">Code implémentant cette action</entry>
            <entry colname="col2"> <filename class="libraryfile">sdx-actions.xsl</filename> </entry>
          </row>
          <row>
            <entry colname="col1">Contexte d'utilisation</entry>
            <entry colname="col2">N'importe où dans <olink localinfo="sdx_page" targetdocent="generalites"> <sgmltag class="element">sdx:page</sgmltag> </olink></entry>
          </row>
          <row>
            <entry colname="col1">Contenu éventuel</entry>
            <entry colname="col2">N'importe quel élément <sgmltag class="element">sdx:*</sgmltag> ou autre. Si l'authentification réussit, les éléments fils seront traités hormis un éventuel sous-élément <olink localinfo="sdx_fallback" targetdocent="parametres"><sgmltag class="element">sdx:fallback</sgmltag></olink>. Réciproquement, si l'authentification échoue, seul l'élément <olink localinfo="sdx_fallback" targetdocent="parametres"><sgmltag class="element">sdx:fallback</sgmltag></olink> sera exécuté.</entry>
          </row>
        </tbody>
      </tgroup>
    </table>
    <para>L'action <ulink url="#sdx_loginsu"><sgmltag class="element">sdx:loginSu</sgmltag></ulink> utilise les mêmes <ulink url="#sdx_login_param">paramètres (communs et spécifiques) que l'action <ulink url="#sdx_login"><sgmltag class="element">sdx:login</sgmltag></ulink></ulink>.</para>
  </section>
  <section id="sdx_logout" lang="fr">
    <title> <sgmltag>sdx:logout</sgmltag></title>
    <para>L'action <ulink url="#sdx_logout"><sgmltag class="element">sdx:logout</sgmltag></ulink> permet de déconnecter l'utilisateur courant (quel que soit son niveau : utilisateur, administrateur, super-utilisateur). L'utilisateur courant devient alors un utilisateur anonyme.</para>
    <para>La déconnexion d'un utilisateur n'a besoin d'aucune information particulière, sinon une confirmation de l'exécution de cette action.</para>
    <table id="sdx_logout_description">
      <title>Description</title>
      <tgroup cols="2">
        <colspec colname="col1" colnum="1" colwidth="*"/>
        <colspec colname="col2" colnum="2" colwidth="*"/>
        <tbody>
          <row>
            <entry colname="col1">Code implémentant cette action</entry>
            <entry colname="col2"> <filename class="libraryfile">sdx-actions.xsl</filename> </entry>
          </row>
          <row>
            <entry colname="col1">Contexte d'utilisation</entry>
            <entry colname="col2">N'importe où dans <olink localinfo="sdx_page" targetdocent="generalites"> <sgmltag class="element">sdx:page</sgmltag> </olink></entry>
          </row>
          <row>
            <entry colname="col1">Contenu éventuel</entry>
            <entry colname="col2"></entry>
          </row>
          <row>
            <entry colname="col1">Utilisation des paramètres communs</entry>
            <entry colname="col2"> </entry>
          </row>
        </tbody>
      </tgroup>
    </table>
    <table id="sdx_logout_param">
      <title>Paramètre spécifique</title>
      <tgroup cols="3">
        <colspec colname="col1" colnum="1" colwidth="1.60*"/>
        <colspec colname="col2" colnum="2" colwidth="7.12*"/>
        <colspec colname="col3" colnum="3" colwidth="1.00*"/>
        <thead>
          <row>
            <entry colname="col1">Nom</entry>
            <entry colname="col2">Description</entry>
            <entry colname="col3"></entry>
          </row>
        </thead>
        <tbody>
          <row>
            <entry colname="col1"> <sgmltag class="attribute">logout</sgmltag> </entry>
            <entry colname="col2">Confirmation de la déconnexion. Ce paramètre n'attend qu'une valeur : <literal>true</literal></entry>
            <entry colname="col3">Obligatoire</entry>
          </row>
        </tbody>
      </tgroup>
    </table>
    <example id="deconnexion" lang="fr">
      <title>Déconnexion</title>
      <para>L'exemple suivant présente le code d'une XSP qui déconnecte l'utilisateur courant... sans aucune intervention de sa part. Noter l'emploi de l'élément <sgmltag class="element">titre</sgmltag> qui devra être intercepté dans la feuille XSLT pour créer le titre de la page HTML.</para>
      <programlisting>
&lt;xsp:page&gt;
  &lt;sdx:page&gt;
    &lt;sdx:logout logout="true"/&gt;
    &lt;titre/&gt;    
  &lt;/sdx:page&gt;
&lt;/xsp:page&gt;
</programlisting>
    </example>
  </section>
</webpage>
