<!-- EN-Revision: 13422 -->
<sect1 id="zend.openid.introduction">
    <title>Introduction</title>

    <para><classname>Zend_OpenId</classname> est le composant de Zend Framework qui propose une API simple pour l'utilisation de
    la technologie OpenID dans son applicatif internet.</para>

    <sect2 id="zend.openid.introduction.what">
        <title>Qu'est ce qu'OpenID ?</title>

        <para>OpenID est un ensemble de protocole permettant une gestion centralisée de l'identification d'une personne.
        Ces protocoles permettent la création d'une identité en ligne, via un fournisseur d'identité. Cette identité
        peut alors être utilisée n'importe où, où OpenID est supporté. Sur les sites utilisant OpenID, il n'est plus
        nécessaire de se souvenir d'identifiants différents, la seule et unique identité OpenID est la même partout. Une
        identité OpenID est en général matérialisée par une URL et un utilisateur est libre de choisir son fournisseur
        OpenID, ou alors même de créer son propre serveur d'identification OpenID, ceci ne nécessitant pas
        d'autorisation centrale.</para>

        <para>Visitez donc <ulink url="http://www.openid.net/">le site officiel de OpenID</ulink> pour plus
        d'information, voyez aussi <ulink url="http://www.openidbook.com/">le OpenID Book, par Rafeeq Rehman</ulink> ou
        <ulink url="http://www.openidfrance.fr">OpenIDFrance</ulink>.</para>
    </sect2>

    <sect2 id="zend.openid.introduction.how">
        <title>Comment cela fonctionne-t-il ?</title>

        <para>Le but de <classname>Zend_OpenId</classname> est d'implémenter le protocole d'identification OpenID, comme décrit
        dans le diagramme suivant :</para>

        <para><inlinegraphic align="center" fileref="figures/zend.openid.protocol.jpg" format="JPEG" scale="100"
        valign="middle" width="559" /></para>

        <orderedlist>
            <listitem>
                <para>L'authentification est initialisée par l'utilisateur final, qui passe son identifiant OpenID, via
                son navigateur.</para>
            </listitem>

            <listitem>
                <para>Le service protégé par OpenID normalise l'identifiant de l'utilisateur. Il en résulte un
                identifiant validé, une URL du serveur OpenID, et une version du protocole OpenID.</para>
            </listitem>

            <listitem>
                <para>Le service protégé par OpenID établit optionnellement une connexion avec le serveur OpenID en
                utilisant des clés <ulink
                url="http://fr.wikipedia.org/wiki/%C3%89change_de_cl%C3%A9s_Diffie-Hellman">Diffie-Hellman</ulink>. Les
                deux parties partagent alors un "secret" utilisé pour signer et vérifier les messages suivants.</para>
            </listitem>

            <listitem>
                <para>Le service protégé par OpenID redirige le navigateur vers l'URL du serveur OpenID, en effectuant
                une requête d'authentification.</para>
            </listitem>

            <listitem>
                <para>Le serveur OpenID vérifie si le navigateur n'est pas déjà identifié.</para>
            </listitem>

            <listitem>
                <para>L'utilisateur entre son mot de passe.</para>
            </listitem>

            <listitem>
                <para>Le serveur OpenID effectue une vérification pour savoir si l'utilisateur a le droit d'accéder au
                service protégé par OpenID.</para>
            </listitem>

            <listitem>
                <para>L'utilisateur final accepte alors ou non de partager ses informations d'identité pour le service
                protégé par OpenID.</para>
            </listitem>

            <listitem>
                <para>Le serveur OpenID redirige le navigateur vers le service protégé par OpenID, avec un message
                "authentification approuvée" ou "échouée".</para>
            </listitem>

            <listitem>
                <para>Le service protégé par OpenID vérifie l'information du serveur OpenID en utilisant le "secret"
                obtenu étape 3 ou en envoyant des informations supplémentaires.</para>
            </listitem>
        </orderedlist>
    </sect2>

    <sect2 id="zend.openid.introduction.structure">
        <title>Zend_OpenId Structure</title>

        <para><classname>Zend_OpenId</classname> contient deux sous-classes. <classname>Zend_OpenId_Consumer</classname> est un client, il
        sera utilisé sur les sites nécessitant l'identification OpenID. <classname>Zend_OpenId_Provider</classname>, elle, permet
        de créer son propre serveur OpenID. Ces deux classes sont totalement indépendantes l'une de l'autre.</para>

        <para>Les seuls points communs entre ces deux classes sont l'extension Simple Registration Extension,
        implémentée par la classe <classname>Zend_OpenId_Extension_Sreg</classname>, ainsi que les fonctions utilitaires présentes
        dans la classe <classname>Zend_OpenId</classname>.</para>

        <note>
            <para><classname>Zend_OpenId</classname> utilise <ulink url="http://www.php.net/manual/fr/ref.gmp.php">l'extension
            GMP</ulink>, lorsqu'elle est disponible. Activez cette extension si possible, ceci améliorera les
            performances avec <classname>Zend_OpenId</classname>.</para>
        </note>
    </sect2>

    <sect2 id="zend.openid.introduction.standards">
        <title>Standards OpenID supportés</title>

        <para>Le composant <classname>Zend_OpenId</classname> est conforme aux standards suivants :</para>

        <itemizedlist>
            <listitem>
                <para>OpenID Authentication protocol version 1.1</para>
            </listitem>

            <listitem>
                <para>OpenID Authentication protocol version 2.0 draft 11</para>
            </listitem>

            <listitem>
                <para>OpenID Simple Registration Extension version 1.0</para>
            </listitem>

            <listitem>
                <para>OpenID Simple Registration Extension version 1.1 draft 1</para>
            </listitem>
        </itemizedlist>
    </sect2>
</sect1>