[ZF-10089] Zend_Log
[zend.git] / documentation / manual / fr / module_specs / Zend_Gdata_AuthSub.xml
blob09a3c434cf70270cb298a5d24f801e2964a77989
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- EN-Revision: 21826 -->
3 <!-- Reviewed: no -->
4 <sect1 id="zend.gdata.authsub">
5     <title>Authentification par procédé AuthSub</title>
7     <para>
8         Le mécanisme d'authentification AuthSub permet d'écrire des applications dans
9         lesquelles il n'est pas nécessaire de coder "en dur" des identifiants. L'application demande
10         ces informations à l'utilisateur, pour ouvrir un session de travail.
11     </para>
13     <para>
14         Voyez <ulink
15         url="http://code.google.com/apis/accounts/AuthForWebApps.html">http://code.google.com/apis/accounts/AuthForWebApps.html</ulink>
16         pour plus d'informations sur l'authentification AuthSub de Google Data.
17     </para>
19     <para>
20         La documentation Google indique que le mécanisme ClientLogin est approprié dans le cas
21         d'applications embarquées, à la différence du mécanisme AuthSub, utilisé pour les
22         applications Web ayant recours à une authentification extérieure. AuthSub récupère des
23         identifiant d'un utilisateur de l'application Web, et un navigateur réagissant aux
24         redirections est requis. Le processus ClientLogin, lui, utilise du code <acronym>PHP</acronym> tel qu'écrit
25         dans l'application elle-même. L'utilisateur de l'application n'entre pas en jeu pour fournir
26         des identifiants de manière interactive.
27     </para>
29     <para>
30         Les identifiants utilisés par le processus AuthSub sont fournis par l'utilisateur de
31         l'application, et non par l'application elle-même.
32     </para>
34     <note>
35         <title>Jetons sécurisés et certificats</title>
37         <para>
38             <classname>Zend_Gdata</classname> ne supporte pas actuellement l'utilisation de
39             jetons sécurisés, car l'authentification AuthSub ne supporte pas les certificats
40             permettant l'obtention de jetons sécurisés.
41         </para>
42     </note>
44     <sect2 id="zend.gdata.authsub.login">
45         <title>Création d'un client HTTP authentifié avec AuthSub</title>
47         <para>
48             Votre application <acronym>PHP</acronym> devrait fournir un lien <acronym>URL</acronym> vers le service
49             d'authentification de Google. La méthode statique
50             <methodname>Zend_Gdata_AuthSub::getAuthSubTokenUri()</methodname> permet ceci. Elle prend
51             un argument représentant l'URL de votre application. De cette manière, le serveur Google
52             pourra générer une réponse menant à une redirection vers cette <acronym>URL</acronym>, une fois
53             l'authentification passée.
54         </para>
56         <para>
57             Après que le serveur d'authentification de Google ait redirigé le navigateur de
58             l'utilisateur vers votre application, un paramètre <constant>GET</constant> est ajouté, il
59             s'agit du <code>jeton</code> d'authentification. Ce jeton servira à éviter de demander
60             une authentification à chaque requête future.
61         </para>
63         <para>
64             Ensuite, utilisez le jeton avec un appel à la méthode
65             <methodname>Zend_Gdata_AuthSub::getHttpClient()</methodname>. Cette méthode retournera
66             alors un objet de type <classname>Zend_Http_Client</classname>, qui sera peuplé des bons
67             en-têtes permettant ainsi une utilisation future sans nécessité de
68             ré-authentification.
69         </para>
71         <para>
72             Ci-dessous un exemple d'une application <acronym>PHP</acronym> qui effectue une authentification afin
73             d'utiliser le service Google Calendar. Elle crée un objet client
74             <classname>Zend_Gdata</classname> utilisant le client <acronym>HTTP</acronym> fraîchement
75             authentifié.
76         </para>
78         <programlisting language="php"><![CDATA[
79 $my_calendar =
80     'http://www.google.com/calendar/feeds/default/private/full';
82 if (!isset($_SESSION['cal_token'])) {
83     if (isset($_GET['token'])) {
84         // Vous pouvez convertir le jeton unique en jeton de session.
85         $session_token =
86             Zend_Gdata_AuthSub::getAuthSubSessionToken($_GET['token']);
87         // Enregistre le jeton de session, dans la session PHP.
88         $_SESSION['cal_token'] = $session_token;
89     } else {
90         // Affiche le lien permettant la génération du jeton unique.
91         $googleUri = Zend_Gdata_AuthSub::getAuthSubTokenUri(
92             'http://'. $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'],
93             $my_calendar, 0, 1);
94         echo "Cliquez <a href='$googleUri'>ici</a>"
95            . " pour autoriser votre application.";
96         exit();
97     }
100 // Création d'un client HTTP authentifié
101 // pour les échanges avec les serveurs Google.
102 $client = Zend_Gdata_AuthSub::getHttpClient($_SESSION['cal_token']);
104 // Création d'un objet Gdata utilisant le client HTTP authentifié :
105 $cal = new Zend_Gdata_Calendar($client);
106 ]]></programlisting>
107     </sect2>
109     <sect2 id="zend.gdata.authsub.logout">
110         <title>Destruction de l'authentification AuthSub</title>
112         <para>
113             Pour détruire la validité d'un jeton d'authentification, utilisez la méthode
114             statique <methodname>Zend_Gdata_AuthSub::AuthSubRevokeToken()</methodname>. Autrement, le
115             jeton reste valide un certain temps.
116         </para>
118         <programlisting language="php"><![CDATA[
119 // construction sécurisée de la valeur.
120 $php_self = htmlentities(substr($_SERVER['PHP_SELF'],
121                                 0,
122                                 strcspn($_SERVER['PHP_SELF'], "\n\r")),
123                          ENT_QUOTES);
125 if (isset($_GET['logout'])) {
126     Zend_Gdata_AuthSub::AuthSubRevokeToken($_SESSION['cal_token']);
127     unset($_SESSION['cal_token']);
128     header('Location: ' . $php_self);
129     exit();
131 ]]></programlisting>
133         <note>
134             <title>Notes de sécurité</title>
136             <para>
137                 Le traitement effectué pour la variable <varname>$php_self</varname> dans l'exemple
138                 ci-dessus est une règle de sécurité générale, elle n'est pas spécifique à
139                 l'utilisation de <classname>Zend_Gdata</classname>. Vous devriez systématiquement
140                 filtrer le contenu que vous envoyez en tant qu'en-tête <acronym>HTTP</acronym>.
141             </para>
143             <para>
144                 Au sujet de la destruction du jeton, elle est recommandée lorsque
145                 l'utilisateur en a terminé avec sa session Google. Même si la possibilité
146                 d'interception de ce jeton reste très faible, il s'agit d'une précaution faisant
147                 partie du bon sens et des bonnes pratiques.
148             </para>
149         </note>
150     </sect2>
151 </sect1>