diff options
author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 21:46:22 -0500 |
---|---|---|
committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 21:46:22 -0500 |
commit | a065e04d529da1d847b5062a12c46d916408bf32 (patch) | |
tree | fe0f8bcec1ff39a3c499a2708222dcf15224ff70 /files/ja/mozilla/persona/remote_verification_api/index.html | |
parent | 218934fa2ed1c702a6d3923d2aa2cc6b43c48684 (diff) | |
download | translated-content-a065e04d529da1d847b5062a12c46d916408bf32.tar.gz translated-content-a065e04d529da1d847b5062a12c46d916408bf32.tar.bz2 translated-content-a065e04d529da1d847b5062a12c46d916408bf32.zip |
update based on https://github.com/mdn/yari/issues/2028
Diffstat (limited to 'files/ja/mozilla/persona/remote_verification_api/index.html')
-rw-r--r-- | files/ja/mozilla/persona/remote_verification_api/index.html | 125 |
1 files changed, 0 insertions, 125 deletions
diff --git a/files/ja/mozilla/persona/remote_verification_api/index.html b/files/ja/mozilla/persona/remote_verification_api/index.html deleted file mode 100644 index f6c5fe4912..0000000000 --- a/files/ja/mozilla/persona/remote_verification_api/index.html +++ /dev/null @@ -1,125 +0,0 @@ ---- -title: Remote Verification API -slug: Mozilla/Persona/Remote_Verification_API -tags: - - BrowserID - - Persona -translation_of: Archive/Mozilla/Persona/Remote_Verification_API ---- -<h3 id="Summary" name="Summary">要約</h3> -<p>ユーザが Web サイトにログインしようとする時、ブラウザが <em>アサーション</em> と呼ばれるデータ構造を生成します。このデータの内容は、暗号化された署名付きのメールアドレスです。ブラウザは、このアサーションを Web サイトに送信し、ユーザにログインを許可する前にアサーションが正当か検証されます。</p> -<p>アサーションはローカルで検証することもできます。または、<span class="link-https"><code>https://verifier.login.persona.org/verify</code></span> でホストされた API でも検証できます。このページでは、この API の使い方を説明します。</p> -<h3 id="Methods" name="Methods">メソッド</h3> -<p><code>https://verifier.login.persona.org/verify</code> に HTTP POST リクエストを送信します。</p> -<h3 id="引数">引数</h3> -<p><code>assertion</code>: ユーザが提供したアサーション。{{ domxref("navigator.id.watch()") }} の <code>onlogin</code> 関数に渡す最初の引数として使います。<br> - <code>audience</code>: あなたのサイトのプロトコル、ドメイン名、ポート番号。例えば、"<code>https://example.com:443</code>" と指定します。</p> -<h3 id="戻り値">戻り値</h3> -<p>この API を呼び出すと、<code>status</code> 要素を含む JSON データ構造を返します。この要素は、"okay" と "failure" のどちらかになります。<code>status</code> の値に依存して、JSON データに以下の追加の要素が含まれることがあります。</p> -<h4 id="okay">"okay"</h4> -<p>アサーションは正当です。</p> -<p>この場合、JSON データ構造に次の追加要素が含まれます:</p> -<table style="width: 80%;"> - <tbody> - <tr> - <td><code>"email"</code></td> - <td>アサーションに含まれるメールアドレス。これは、ログインしようとしているユーザのものです。</td> - </tr> - <tr> - <td><code>"audience"</code></td> - <td>アサーションに含まれる audience 値。あなたの Web サイトの URL であることが期待されます。</td> - </tr> - <tr> - <td>"<code>expires"</code></td> - <td>アサーションの有効期限日。<a href="docs/JavaScript/Reference/Global_Objects/Date/valueOf" title="docs/JavaScript/Reference/Global_Objects/Date/valueOf">Date オブジェクトの初期値</a> を表します。これは、1970 年 1 月 1 日の午前 0 時 (UTC) から経過したミリ秒単位の値です。</td> - </tr> - <tr> - <td><code>"issuer"</code></td> - <td>アサーションを発行した ID プロバイダのホスト名。</td> - </tr> - </tbody> -</table> -<h4 id="failure">"failure"</h4> -<p>アサーションは不正です。この場合、JSON データ構造に 1 個の追加要素が含まれます:</p> -<table> - <tbody> - <tr> - <td><code>"reason"</code></td> - <td>検証が失敗した理由を説明する文字列。</td> - </tr> - </tbody> -</table> -<h3 id="コード例">コード例</h3> -<h4 id="node.js">node.js</h4> -<p>このコード例は、express.js を使用する node.js サーバを使用します。</p> -<pre class="brush: js" style="margin-left: 120px;">var express = require("express"), - app = express.createServer(), - https = require("https"), - querystring = require("querystring"); -/* ... */ - -// audience は、ブラウザのアドレスバーに表示されている URL と一致しなければなりません。 -// プロトコルとホスト名、ポート番号を含みます。 -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("assertion verified successfully for email:", email); - res.json(email); - } else { - console.log("failed to verify assertion:", verifierResp.reason); - res.send(verifierResp.reason, 401); - } - } catch(e) { - console.log("non-JSON response from verifier"); - // 検証側から偽の応答がありました! - res.send("bogus response from verifier!", 401); - - } - }); - }); - 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("verifying assertion!"); -}); - -</pre> -<p>via <a class="link-https" href="https://github.com/lloyd/myfavoritebeer.org/blob/06255b960e1f9078bc935c1c7af0662f33c88818/server/main.js#L112" title="https://github.com/lloyd/myfavoritebeer.org/blob/06255b960e1f9078bc935c1c7af0662f33c88818/server/main.js#L112">Lloyd Hilaiel</a></p> -<h4 id="PHP">PHP</h4> -<pre class="brush: php">$url = 'https://verifier.login.persona.org/verify'; -$assert = $_POST['assert']; -$params = 'assertion='.$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> |