diff options
author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
---|---|---|
committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
commit | 33058f2b292b3a581333bdfb21b8f671898c5060 (patch) | |
tree | 51c3e392513ec574331b2d3f85c394445ea803c6 /files/fr/archive/mozilla/persona/api_de_verification/index.html | |
parent | 8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff) | |
download | translated-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.html | 142 |
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 && 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 < 5.2 et écrire votre propre filtre +$params = 'assertion=' . urlencode($assert) . '&audience=' . + urlencode('http://example.com:80'); +$ch = curl_init(); +$options = array( + CURLOPT_URL => $url, + CURLOPT_RETURNTRANSFER => TRUE, + CURLOPT_POST => 2, + CURLOPT_POSTFIELDS => $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> |