aboutsummaryrefslogtreecommitdiff
path: root/files/fr/archive/mozilla/persona/api_de_verification/index.html
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
commit33058f2b292b3a581333bdfb21b8f671898c5060 (patch)
tree51c3e392513ec574331b2d3f85c394445ea803c6 /files/fr/archive/mozilla/persona/api_de_verification/index.html
parent8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff)
downloadtranslated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip
initial commit
Diffstat (limited to 'files/fr/archive/mozilla/persona/api_de_verification/index.html')
-rw-r--r--files/fr/archive/mozilla/persona/api_de_verification/index.html142
1 files changed, 142 insertions, 0 deletions
diff --git a/files/fr/archive/mozilla/persona/api_de_verification/index.html b/files/fr/archive/mozilla/persona/api_de_verification/index.html
new file mode 100644
index 0000000000..04a8400141
--- /dev/null
+++ b/files/fr/archive/mozilla/persona/api_de_verification/index.html
@@ -0,0 +1,142 @@
+---
+title: API de vérification
+slug: Archive/Mozilla/Persona/API_de_verification
+tags:
+ - Persona
+translation_of: Archive/Mozilla/Persona/Remote_Verification_API
+---
+<h2 id="Summary" name="Summary">Résumé</h2>
+<p>Lorsqu'un utilisateur essaie de se connecter sur un site, son navigateur génère un objet de données appelé une <em>assertion</em>. Il s'agit essentiellement d'une adresse mail cryptée. Le navigateur envoie cette assertion au site, qui doit vérifier sa validité avant de connecter l'utilisateur.</p>
+<p>Les assertions peuvent être vérifiées localement, ou en utilisant l'API disponible à l'adresse <span class="link-https"><code>https://verifier.login.persona.org/verify</code></span>. Cette page décrit comment utiliser l'API.</p>
+<h2 id="Methods" name="Methods">Méthode</h2>
+<p>Envoyez une requête HTTP POST à l'adresse <code>https://verifier.login.persona.org/verify</code>.</p>
+<h3 id="Parameters" name="Parameters">Paramètres</h3>
+<dl>
+ <dt>
+ <code>assertion</code></dt>
+ <dd>
+ L'assertion est fournie par l'utilisateur. Disponible en tant que premier paramètre passé à la fonction <code>onlogin</code> dans <a href="/fr/docs/Web/API/Navigator/id/watch" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>navigator.id.watch()</code></a>.</dd>
+ <dt>
+ <code>audience</code></dt>
+ <dd>
+ Le protocole, nom de domaine et port de votre site. Par exemple : "<code>https://example.com:443</code>".</dd>
+</dl>
+<h3 id="Return_values" name="Return_values">Valeurs de retour</h3>
+<p>La requête retourne un objet JSON contenant une propriété <code>status</code> qui peut valoir "okay" ou "failure". En fonction de ces valeurs, l'objet peut contenir des éléments additionels listés ci-dessous.</p>
+<h4 id="okay" name="okay">"okay"</h4>
+<p>L'assertion est valide.</p>
+<p>Dans ce cas, l'objet JSON contient en plus les propriétés suivantes :</p>
+<table class="standard-table" style="width: 80%;">
+ <tbody>
+ <tr>
+ <td>"<code>email</code>"</td>
+ <td>L'adresse mail contenue dans l'assertion, pour permettre la connexion de l'utilisateur.</td>
+ </tr>
+ <tr>
+ <td>"<code>audience</code>"</td>
+ <td>La valeur audience contenue dans l'assertion. Doit être l'URL de votre propre site.</td>
+ </tr>
+ <tr>
+ <td>"<code>expires</code>"</td>
+ <td>La date à laquelle expire l'assertion, exprimée The date the assertion expires, exprimé comme une <a href="/fr/docs/Référence_de_JavaScript_1.5_Core/Objets_globaux/Date/valueOf" title="en/JavaScript/Reference/Global_Objects/Date/valueOf">valeur primitive de l'objet Date</a> qui est le nombre de secondes écoulées depuis le 1er Janvier 1970 00h00 GMT.</td>
+ </tr>
+ <tr>
+ <td>"<code>issuer</code>"</td>
+ <td>Le nom du fournisseur d'identité ayant fourni l'assertion.</td>
+ </tr>
+ </tbody>
+</table>
+<h4 id="failure" name="failure">"failure"</h4>
+<p>L'assertion n'est pas valide.</p>
+<p><span style="line-height: 1.572;">Dans ce cas, l'objet JSON contient une propriété additionnelle :</span></p>
+<table class="compact-table">
+ <tbody>
+ <tr>
+ <td><code>"reason"</code></td>
+ <td>Une chaîne de caractère expliquant pourquoi la validation de l'assertion a échoué</td>
+ </tr>
+ </tbody>
+</table>
+<h2 id="Examples" name="Examples">Exemples</h2>
+<h3 id="node.js" name="node.js">node.js</h3>
+<p>Cet exemple utilise un serveur node.js utilisant express.js</p>
+<pre class="brush: js">var express = require("express"),
+ app = express.createServer(),
+ https = require("https"),
+ querystring = require("querystring");
+/* ... */
+
+// La variable audience doit correspondre à ce qu'affiche la barre d'adresse du navigateur,
+// ce qui inclut le protocole, le nom de domaine et le port
+var audience = "http://localhost:8888";
+
+app.post("/authenticate", function(req, res) {
+ var vreq = https.request({
+ host: "verifier.login.persona.org",
+ path: "/verify",
+ method: "POST"
+ }, function(vres) {
+ var body = "";
+ vres.on('data', function(chunk) { body+=chunk; } )
+ .on('end', function() {
+ try {
+ var verifierResp = JSON.parse(body);
+ var valid = verifierResp &amp;&amp; verifierResp.status === "okay";
+ var email = valid ? verifierResp.email : null;
+ req.session.email = email;
+ if (valid) {
+ console.log("l'assertion a été vérifiée avec succès pour le mail :", email);
+ res.json(email);
+ } else {
+ console.log("l'assertion n'a pas été validée pour la raison suivante :", verifierResp.reason);
+ res.send(verifierResp.reason, 403);
+ }
+ } catch(e) {
+ console.log("le verifier n'a pas renvoyé un objet JSON");
+ // bogus response from verifier!
+ res.send("bogue de la part du verifier !", 403);
+
+ }
+ });
+ });
+
+ vreq.setHeader('Content-Type', 'application/x-www-form-urlencoded');
+
+ var data = querystring.stringify({
+ assertion: req.body.assertion,
+ audience: audience
+ });
+
+ vreq.setHeader('Content-Length', data.length);
+ vreq.write(data);
+ vreq.end();
+
+ console.log("vérification de l'assertion");
+});
+
+</pre>
+<p>via <a class="link-https" href="https://github.com/lloyd/myfavoritebeer.org/blob/06255b960e1f9078bc935c1c7af0662f33c88818/server/main.js#L112">Lloyd Hilaiel</a></p>
+<h3 id="PHP" name="PHP">PHP</h3>
+<pre class="brush: php">$url = 'https://verifier.login.persona.org/verify';
+$assert = filter_input(
+    INPUT_POST,
+    'assertion',
+    FILTER_UNSAFE_RAW,
+    FILTER_FLAG_STRIP_LOW|FILTER_FLAG_STRIP_HIGH
+);
+//utiliser la superglobale $_POST pour PHP &lt; 5.2 et écrire votre propre filtre
+$params = 'assertion=' . urlencode($assert) . '&amp;audience=' .
+ urlencode('http://example.com:80');
+$ch = curl_init();
+$options = array(
+ CURLOPT_URL =&gt; $url,
+ CURLOPT_RETURNTRANSFER =&gt; TRUE,
+ CURLOPT_POST =&gt; 2,
+ CURLOPT_POSTFIELDS =&gt; $params
+);
+curl_setopt_array($ch, $options);
+$result = curl_exec($ch);
+curl_close($ch);
+echo $result;</pre>
+<p>Via <a class="link-https" href="https://github.com/codepo8/BrowserID-login-with-PHP/blob/184fdb74c8a554461c262875859968154d09288e/verify.php">Christian Heilmann</a></p>
+<p>Note: si vous envoyez les paramètres assertion et audience en tant qu'objet JSON, ils <strong>ne doivent pas</strong> être encodés. S'ils sont envoyés en tant que paramètres normaux d'une requête HTTP POST, comme dans l'exemple ci-dessus, ils <strong>doivent</strong> être encodés.</p>