<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> <dfn><code class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">oauth_callback</anchor></code></dfn> は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OAuth 1.0</anchor>
において<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">コールバック</anchor>の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> を指定する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor>です。</p><section><h1>仕様書</h1><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <strong><cite xml:lang="en">RFC 5849 - The OAuth 1.0 Protocol</cite> (<time>2014-12-28 14:19:21 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc5849#section-2.1">http://tools.ietf.org/html/rfc5849#section-2.1</anchor-external></strong></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> <cite xml:lang="en">RFC 5849 - The OAuth 1.0 Protocol</cite> (<time>2014-12-28 14:19:21 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc5849#section-2.2">http://tools.ietf.org/html/rfc5849#section-2.2</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> <cite xml:lang="en">RFC 5849 - The OAuth 1.0 Protocol</cite> (<time>2014-12-28 14:19:21 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc5849#section-4.13">http://tools.ietf.org/html/rfc5849#section-4.13</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[19]</anchor-end> <strong><cite xml:lang="en">RFC 6749 - The OAuth 2.0 Authorization Framework</cite> (<time>2014-12-15 14:15:35 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc6749#section-3.1.2">http://tools.ietf.org/html/rfc6749#section-3.1.2</anchor-external></strong></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="36" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[36]</anchor-end> <cite xml:lang="en">RFC 6749 - The OAuth 2.0 Authorization Framework</cite> (<time>2014-12-15 14:15:35 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc6749#section-4.1.1">http://tools.ietf.org/html/rfc6749#section-4.1.1</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="38" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[38]</anchor-end> <cite xml:lang="en">RFC 6749 - The OAuth 2.0 Authorization Framework</cite> (<time>2014-12-15 14:15:35 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc6749#section-4.1.2">http://tools.ietf.org/html/rfc6749#section-4.1.2</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="43" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[43]</anchor-end> <cite xml:lang="en">RFC 6749 - The OAuth 2.0 Authorization Framework</cite> (<time>2014-12-15 14:15:35 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc6749#section-4.1.3">http://tools.ietf.org/html/rfc6749#section-4.1.3</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="46" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[46]</anchor-end> <cite xml:lang="en">RFC 6749 - The OAuth 2.0 Authorization Framework</cite> (<time>2014-12-15 14:15:35 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc6749#section-4.2.1">http://tools.ietf.org/html/rfc6749#section-4.2.1</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="53" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[53]</anchor-end> <cite xml:lang="en">RFC 6749 - The OAuth 2.0 Authorization Framework</cite> (<time>2014-12-15 14:15:35 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc6749#section-10.2">http://tools.ietf.org/html/rfc6749#section-10.2</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="54" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[54]</anchor-end> <cite xml:lang="en">RFC 6749 - The OAuth 2.0 Authorization Framework</cite> (<time>2014-12-15 14:15:35 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc6749#section-10.3">http://tools.ietf.org/html/rfc6749#section-10.3</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="55" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[55]</anchor-end> <cite xml:lang="en">RFC 6749 - The OAuth 2.0 Authorization Framework</cite> (<time>2014-12-15 14:15:35 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc6749#section-10.5">http://tools.ietf.org/html/rfc6749#section-10.5</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[61]</anchor-end> <cite xml:lang="en">RFC 6749 - The OAuth 2.0 Authorization Framework</cite> (<time>2014-12-15 14:15:35 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc6749#section-10.6">http://tools.ietf.org/html/rfc6749#section-10.6</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="62" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[62]</anchor-end> <cite xml:lang="en">RFC 6749 - The OAuth 2.0 Authorization Framework</cite> (<time>2014-12-15 14:15:35 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc6749#section-10.12">http://tools.ietf.org/html/rfc6749#section-10.12</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="64" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[64]</anchor-end> <cite xml:lang="en">RFC 6749 - The OAuth 2.0 Authorization Framework</cite> (<time>2014-12-15 14:15:35 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc6749#section-10.15">http://tools.ietf.org/html/rfc6749#section-10.15</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="65" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[65]</anchor-end> <cite xml:lang="en">RFC 6749 - The OAuth 2.0 Authorization Framework</cite> (<time>2014-12-15 14:15:35 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc6749#appendix-A.6">http://tools.ietf.org/html/rfc6749#appendix-A.6</anchor-external></li></ul></refs></section><section><h1>OAuth 1.0 <code class="URI" xml:lang="en">oauth_callback</code> 引数</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <code class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">oauth_callback</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">一時credentials要求</anchor>で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>に指定します
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。
この<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">必須</strong></anchor>です <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> その値は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">資源所有者認可</anchor>の完了時に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">資源所有者</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクト</anchor>して戻す先の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">絶対URL</anchor>
を表します <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">コールバック</anchor>を受信できない時や、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">コールバック</anchor>の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor>
を他の方法で指定する時には、値を <code class="URI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">oob</anchor></code> としなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> <code xmlns="http://www.w3.org/1999/xhtml">oob</code> は「out-of-band configuration」を表します <src><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">資源所有者認可</anchor>において<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">資源所有者</anchor>がアクセスを認めたら、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">資源所有者</anchor>は <code class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">oauth_callback</anchor></code> その他の方法で指定された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">コールバック</anchor>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクト</anchor>されます <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal></src>。その場合 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">query</anchor>
に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor>が追加されます。あるいは <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">oob</anchor></code>
の場合は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクト</anchor>のかわりに<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">検証符号</anchor>が表示されます <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal></src>。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">資源所有者認可</anchor>を参照。</comment-p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> <code xmlns="http://www.w3.org/1999/xhtml" class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">oauth_callback</anchor></code> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">必須</anchor>ですが、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>はその他の方法で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">コールバック</anchor>先を決定しても良いようです。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="89" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[89]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Vitadock</anchor> は <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">oauth_callback</anchor></code> を使わず、事前に設定した固定の値としています <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="88" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;88</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="86" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[86]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Twitter</anchor> は <code class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">oauth_callback</anchor>=<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">oob</anchor></code> のことを
<dfn><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PIN-Based OAuth</anchor></dfn> と呼んでいます <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="87" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;87</anchor-internal></src>。</p><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="88" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[88]</anchor-end> <cite xml:lang="en">Definitions · Medisana/vitadock-api Wiki</cite> (<time>2015-03-13 09:37:46 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/Medisana/vitadock-api/wiki/Definitions">https://github.com/Medisana/vitadock-api/wiki/Definitions</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="87" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[87]</anchor-end> <cite>PIN-based authorization | Twitter Developers</cite> (<time>2015-03-05 11:28:57 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://dev.twitter.com/oauth/pin-based">https://dev.twitter.com/oauth/pin-based</anchor-external></li></ul></refs></section><section><h1>OAuth 2.0 コールバックエンドポイント</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可鯖</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可エンドポイント</anchor>で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">資源所有者</anchor>とのやり取りが完了したら、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">資源所有者</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>の<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>リダイレクトエンドポイント</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">redirection endpoint</rt></rubyb></dfn>へと<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクト</anchor>します。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;19</anchor-internal></src></p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可エンドポイント</anchor>も参照。</comment-p><section><h1>コールバック URL</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[21]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可鯖</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクト</anchor>する <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアントの登録</anchor>の際に指定されたものか、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可</anchor><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>を行った際に指定されたものです <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;19</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[22]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクトエンドポイント</anchor>の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3986</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">絶対URI</anchor>でなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor>。
<code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">application/x-www-form-urlencoded</anchor></code>
形式の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL query</anchor> を含んでも構いません。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">素片識別子</anchor>を含んでは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor>。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">query</anchor> に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor>を追加するときは、元の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">query</anchor> があれば残さなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor>。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;19</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[23]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクトエンドポイント</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>の <code class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">response_type</anchor></code>
が <code class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">code</anchor></code> や <code class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">token</anchor></code> の時や、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクトエンドポイント</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">開放型ネットワーク</anchor>上を繊細な <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">credentials</anchor>
を転送させることとなる時には、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLS</anchor> を使う<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">べきです</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;19</anchor-internal></src>。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクトURL</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ネットワーク</anchor>上の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">資源</anchor>を表す時は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLS</anchor> を使う<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">べき</strong></anchor>です <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="55" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;55</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="75" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;75</anchor-internal></src>。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">資源所有者</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認証</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可符号</anchor>によって行う時は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLS</anchor> を使わなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="55" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;55</anchor-internal></src>。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アクセストークン</anchor>を送信する時は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLS</anchor> を使わなければなりません <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="54" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;54</anchor-internal></src>。</p><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="75" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[75]</anchor-end> <cite xml:lang="en">RFC 6819 - OAuth 2.0 Threat Model and Security Considerations</cite> (<time>2015-02-10 06:43:00 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc6819#section-4.4.1.5">http://tools.ietf.org/html/rfc6819#section-4.4.1.5</anchor-external></li></ul></refs><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="24" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[24]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可鯖</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクトエンドポイント</anchor>が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLS</anchor> を使わない時は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">資源所有者</anchor>に対して安全でないことを警告する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">べきです</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;19</anchor-internal></src>。</p></section><section><h1>リダイレクト URL の登録</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[25]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可鯖</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント型</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">公開</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;19</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;61</anchor-internal></src> や、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">暗示的承諾型</anchor>を使う<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント型</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">機密</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;19</anchor-internal></src> については、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアントの登録</anchor>時に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクトエンドポイント</anchor>を指定させなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;19</anchor-internal></src>。
クライアントの性質上<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント認証</anchor>が行えないものに対しても、指定させなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="53" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;53</anchor-internal></src>。
またすべての<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>に対し、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可エンドポイント</anchor>の利用に先立ち<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクトエンドポイント</anchor>の登録を求める<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">べきです</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;19</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;61</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[26]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可鯖</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>が複数の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクトエンドポイント</anchor>を登録することを認めても構いません <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;19</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="28" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[28]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可鯖</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>に完全な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクトURL</anchor>を指定することを求める<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">べきです</strong></anchor>。
そうでなくても、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL scheme</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">authority</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">path</anchor> を指定することを求める<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">べきです</strong></anchor>。
完全な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクトURL</anchor>を指定させても、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>は <code class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">state</anchor></code>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor>により<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>ごとのカスタマイズを行えます。そうでない場合は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">query</anchor> の部分に限って動的に変更できます。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;19</anchor-internal></src></p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="27" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[27]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクトエンドポイント</anchor>の登録を求めないと、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可エンドポイント</anchor>が<ruby xmlns="http://www.w3.org/1999/xhtml"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">開放型リダイレクト器</anchor><rt>オープンリダイレクター</rt></ruby>として悪用されるおそれがあります <src><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;19</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="64" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;64</anchor-internal></src>。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可符号</anchor>などが第三者にわたるため危険です <src><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="68" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;68</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="69" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;69</anchor-internal></src>。そうでなくても<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フィッシング</anchor>などに悪用されることがあります。<refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="68" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[68]</anchor-end> <cite xml:lang="en">RFC 6819 - OAuth 2.0 Threat Model and Security Considerations</cite> (<time>2015-02-10 06:43:00 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc6819#section-4.1.5">http://tools.ietf.org/html/rfc6819#section-4.1.5</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="69" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[69]</anchor-end> <cite xml:lang="en">RFC 6819 - OAuth 2.0 Threat Model and Security Considerations</cite> (<time>2015-02-10 06:43:00 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc6819#section-4.2.4">http://tools.ietf.org/html/rfc6819#section-4.2.4</anchor-external></li></ul></refs></comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="52" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[52]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクトURL</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント認証</anchor>が機能しない場合の安全性の確保のために補助的に用いられることがあります。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント認証</anchor>参照。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="73" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[73]</anchor-end> なお、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクトURL</anchor>の登録とそれによる制限は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">credentials</anchor>
が第三者の手にわたることをできるだけ防ぐことを狙ってはいますが、
独自の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL scheme</anchor> によって<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ネイティブアプリケーション</anchor>を起動する場合など、
本来の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>に伝わるとは保証されない場合もあり、注意が必要です <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="72" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;72</anchor-internal></src>。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可鯖</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクトURL</anchor>として認める <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> の種類を制限する必要があるかもしれません。</p><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="74" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[74]</anchor-end> ある <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL scheme</anchor> を使う<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スマートフォンアプリ</anchor>が、その <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL scheme</anchor>
を使った<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクトURL</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント登録</anchor>時に指定したとします。
その<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スマートフォンアプリ</anchor>がインストールされた端末で当該<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>から <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OAuth</anchor>
フローを実行すれば、意図通りその<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スマートフォンアプリ</anchor>に結果が返されます。</p><p xmlns="http://www.w3.org/1999/xhtml">ここで別の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スマートフォンアプリ</anchor>がそれと同じ <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL scheme</anchor>
を使うと <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OS</anchor> に登録すると、以後 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OAuth</anchor> 
の結果はこちらの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スマートフォンアプリ</anchor>に返されることとなります。
このアプリが悪意を持っていなかったとしても、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL scheme</anchor>
の決め方次第では偶然衝突することはあります。</p></example><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="72" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[72]</anchor-end> <cite xml:lang="en">RFC 6819 - OAuth 2.0 Threat Model and Security Considerations</cite> (<time>2015-02-10 06:43:00 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc6819#section-4.4.1.4">http://tools.ietf.org/html/rfc6819#section-4.4.1.4</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="84" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[84]</anchor-end> <cite xml:lang="en">RFC 6819 - OAuth 2.0 Threat Model and Security Considerations</cite> (<time>2015-02-10 06:43:00 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc6819#section-5.2.3.5">http://tools.ietf.org/html/rfc6819#section-5.2.3.5</anchor-external></li></ul></refs></section><section><h1><code class="URI" xml:lang="en">redirect_uri</code> 引数</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="29" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[29]</anchor-end> <code class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">redirect_uri</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクトURL</anchor>
を指定するものです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="66" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[66]</anchor-end> この<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor>の値は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3986</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URI参照</anchor>です <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="65" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;65</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="37" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[37]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可符号</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アクセストークン</anchor>を取得する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可エンドポイント</anchor>へのアクセスで指定できます <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="36" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;36</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="40" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;40</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[30]</anchor-end> 複数の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクトURL</anchor>が登録されている場合、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクトURL</anchor>の一部分のみが登録されている場合、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクトURL</anchor>が登録されていない場合には、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可</anchor>の要求で
<code class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">redirect_uri</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor>を指定しなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;19</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[31]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可エンドポイント</anchor>の要求で <code class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">redirect_uri</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor>が含まれている場合、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可鯖</anchor>は、登録されている<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクトURL</anchor>があればそれと<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">比較</anchor>しなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;19</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="46" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;46</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;61</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="76" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;76</anchor-internal></src>。
完全な <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> が登録されている場合には、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3986</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">単純文字列比較</anchor>に依らなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;19</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="46" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;46</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="32" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[32]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可</anchor>の要求で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクトURL</anchor>が指定されない場合、
非妥当な場合、
一致しない場合には、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可鯖</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">資源所有者</anchor>に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">誤り</anchor>を通知する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">べき</strong></anchor>です。
非妥当な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクトURL</anchor>に自動的に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクト</anchor>しては<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor>。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;19</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="38" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;38</anchor-internal></src></p><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="76" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[76]</anchor-end> <cite xml:lang="en">RFC 6819 - OAuth 2.0 Threat Model and Security Considerations</cite> (<time>2015-02-10 06:43:00 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc6819#section-4.4.1.7">http://tools.ietf.org/html/rfc6819#section-4.4.1.7</anchor-external></li></ul></refs><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="67" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[67]</anchor-end> 構文上<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">相対URL</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor>に指定することは認められていますが、
それを<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可鯖</anchor>がどう解釈するべきなのかは明記されていません。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">比較</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクト</anchor>の前に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">解決</anchor>するべきなのか、
その場合の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">基底URL</anchor>が何であるのかは不明確です。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">相対URL</anchor>を使うべきではなさそうです。
また<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可鯖</anchor>も<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">相対URL</anchor>の指定は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">誤り</anchor>とみなしてよさそうに思えます。</p></section><section><h1>認可符号フロー</h1><section><h1>リダイレクトURLの引数</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="39" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[39]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可エンドポイント</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">資源所有者</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクトエンドポイント</anchor>に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクト</anchor>する際に、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>が指定した<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクトURL</anchor>の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL query</anchor> に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor>を追加しなければなりません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="40" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[40]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可符号</anchor>が求められている場合、次の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor>を追加します <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="38" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;38</anchor-internal></src>。<figure class="list members"><dl><dt><code class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">code</anchor></code></dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可符号</anchor>。</dd><dt><code class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">state</anchor></code></dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">局所状態</anchor>。<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSRF</anchor> 対策に使います。</dd></dl></figure></p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可エンドポイント</anchor>を参照。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[41]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>は、認識できない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor>を無視しなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="38" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;38</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="42" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[42]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可符号</anchor>の長さについて仮定するべきではありません <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="38" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;38</anchor-internal></src>。</p></section><section><h1>リダイレクトエンドポイントの処理</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="33" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[33]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクトエンドポイント</anchor>への<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクト</anchor>の結果、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">資源所有者</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者エージェント</anchor>が処理する <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML文書</anchor>が返されることとなるのが普通です。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;19</anchor-internal></src> 直接 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML</anchor> を返すこともできますし、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>の他の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">エンドポイント</anchor>に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクト</anchor>してから
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML</anchor> を返すこともできます。前者の場合は <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="34" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;34</anchor-internal> の通り注意が必要です。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="35" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[35]</anchor-end> いずれにせよ、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアントエンドポイント</anchor>へのアクセスがあれば、
その<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>に含まれる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認証符号</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">トークンエンドポイント</anchor>に送信して<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アクセストークン</anchor>を得ることが期待されています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="44" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[44]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>から<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可鯖</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">トークンエンドポイント</anchor>への<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可符号</anchor>から<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アクセストークン</anchor>を取得する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>には、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可エンドポイント</anchor>で指定したのと同じ <code class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">redirect_uri</anchor></code>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor>を (あれば) 指定しなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="43" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;43</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="45" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[45]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可鯖</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可エンドポイント</anchor>での<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可符号</anchor>の発行時に
<code class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">redirect_uri</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor>が指定されていたなら、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">トークンエンドポイント</anchor>において同じ値が指定されていることを確認しなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="43" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;43</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;61</anchor-internal></src>。</p></section></section><section><h1>暗示的承諾フローでのリダイレクト URL</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="47" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[47]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">暗示的承諾型</anchor>のフローでは、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可エンドポイント</anchor>からの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクト</anchor>では<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor>は
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL query</anchor> ではなく<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">素片識別子</anchor>に追加されます。<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクトURL</anchor>
は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OAuth</anchor> の処理を直接<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>側で行うのではなく、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OAuth</anchor>
の処理を行う <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JavaScript</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アプリケーション</anchor>を含む <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML文書</anchor>を返すことが期待されています。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可エンドポイント</anchor>を参照。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="48" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[48]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アクセストークン</anchor>が求められている場合、次の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor>を追加します <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="46" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;46</anchor-internal></src>。<figure class="list members"><dl><dt><code class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">access_token</anchor></code></dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アクセストークン</anchor>。</dd><dt><code class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">token_type</anchor></code></dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">トークン</anchor>の種別。</dd><dt><code class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">expires_in</anchor></code></dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アクセストークン</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">寿命</anchor>。</dd><dt><code class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">scope</anchor></code></dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アクセストークン</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">適用範囲</anchor>。</dd><dt><code class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">state</anchor></code></dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">局所状態</anchor>。<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSRF</anchor> 対策に使います。</dd></dl></figure></p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="49" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[49]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> では<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">素片識別子</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求URL</anchor>に含まれませんから、
これらの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor>には <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JavaScript</anchor> からはアクセスできますが、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>は直接アクセスできません。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="50" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[50]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>は、認識できない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor>を無視しなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="46" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;46</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="51" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[51]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アクセストークン</anchor>の長さについて仮定するべきではありません <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="38" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;38</anchor-internal></src>。</p></section></section><section><h1>リダイレクトエンドポイントの応答</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="56" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[56]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">資源所有者</anchor>から<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクトURL</anchor>への<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>があれば、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OAuth</anchor> として必要な処理 (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OAuth 1.0</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">トークン要求</anchor>や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OAuth 2.0</anchor>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">トークンエンドポイント</anchor>への要求の送信) を行いつつ、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">資源所有者</anchor>に次の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>を送る必要があります。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OAuth</anchor> としては厳密に動作が決められているわけではありませんが、
一般的には<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">資源所有者</anchor>の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>で表示するべき、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OAuth</anchor> の一連の処理を完了したことを示す <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML文書</anchor>を送信することが多いようです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="57" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[57]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクトURL</anchor>への<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>の処理として <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OAuth</anchor> 処理をすると同時に
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML文書</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>として返すこともできますが、
一旦再度<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクト</anchor>してから<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML文書</anchor>を返すのが普通です。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">ただし<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">暗示的承諾型</anchor>フローでは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OAuth</anchor> 処理をするのは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>側の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>ではなく、
返された <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML文書</anchor>に含まれる <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JavaScript</anchor> ですから、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクト</anchor>してはいけません。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクト</anchor>すると<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">素片識別子</anchor>に含まれる情報にアクセスできなくなってしまいます。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="34" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[34]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OAuth 2.0</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可符号</anchor>フローにおいて<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクトエンドポイント</anchor>が直接 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML文書</anchor>を返す場合には、
そこに含まれる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スクリプト</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクトURL</anchor>およびそこに含まれる
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">credentials</anchor> にアクセスできます。<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">第三者</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スクリプト</anchor>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アクセス解析</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ソーシャルプラグイン</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">広告</anchor>など)
を含める<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">べきではありません</strong></anchor>。そのような必要があるなら、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">credentials</anchor> を取り出してから再度他の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">エンドポイント</anchor>に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクト</anchor>し、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">credentials</anchor> にアクセスできないようにする<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">べきです</strong></anchor>。
そうしない場合には、まず<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>自身による<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スクリプト</anchor>によって
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">credentials</anchor> を取り出し除去してから<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">第三者</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スクリプト</anchor>が実行されるようにしなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor>。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;19</anchor-internal></src>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スクリプト</anchor>が不正なものに置き換えられることがないようにも、注意が必要です <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="82" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;82</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="58" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[58]</anchor-end> 再度<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクト</anchor>しないで <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML文書</anchor>を返す場合、
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="34" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;34</anchor-internal> 以外であっても第三者の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スクリプト</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクトURL</anchor>
や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書</anchor>中に含まれる <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">credentials</anchor> にアクセスできてしまいますから、注意が必要です。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="59" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[59]</anchor-end> 再度<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクト</anchor>しないで <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML文書</anchor>を返す場合、
そこから第三者の管理する <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webサイト</anchor>への<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リンク</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">画像</anchor>等があると、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Referrer</anchor> を通じて <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">credentials</anchor> が漏れる可能性がある <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="70" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;70</anchor-internal></src> ので、注意が必要です。</p><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="70" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[70]</anchor-end> <cite xml:lang="en">RFC 6819 - OAuth 2.0 Threat Model and Security Considerations</cite> (<time>2015-02-10 06:43:00 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc6819#section-4.4.1.1">http://tools.ietf.org/html/rfc6819#section-4.4.1.1</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="82" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[82]</anchor-end> <cite xml:lang="en">RFC 6819 - OAuth 2.0 Threat Model and Security Considerations</cite> (<time>2015-02-10 06:43:00 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc6819#section-4.4.2.4">http://tools.ietf.org/html/rfc6819#section-4.4.2.4</anchor-external></li></ul></refs><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="60" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[60]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTPS</anchor> のページでも、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Referrer</anchor> は送信されます。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="71" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[71]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>の履歴により、当該<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">計算機</anchor>にアクセスできる他の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者</anchor>にも
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> が漏れる可能性はあります <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="70" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;70</anchor-internal></src>。通常は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可符号</anchor>をすぐに<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アクセストークン</anchor>の取得に使うため、
使用済みの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可符号</anchor>は再利用できなくなりますが、そうでない場合には注意が必要となります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="63" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[63]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクトエンドポイント</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSRF</anchor> 対策しなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="62" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;62</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="77" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;77</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="83" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;83</anchor-internal></src>。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><code xmlns="http://www.w3.org/1999/xhtml" class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">state</anchor></code> も参照。</comment-p><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="77" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[77]</anchor-end> <cite xml:lang="en">RFC 6819 - OAuth 2.0 Threat Model and Security Considerations</cite> (<time>2015-02-10 06:43:00 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc6819#section-4.4.1.8">http://tools.ietf.org/html/rfc6819#section-4.4.1.8</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="83" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[83]</anchor-end> <cite xml:lang="en">RFC 6819 - OAuth 2.0 Threat Model and Security Considerations</cite> (<time>2015-02-10 06:43:00 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc6819#section-4.4.2.5">http://tools.ietf.org/html/rfc6819#section-4.4.2.5</anchor-external></li></ul></refs></section><section><h1>セキュリティー</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>は、指定された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">コールバックURL</anchor>が適切なものであるか注意して確認する必要があります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OAuth 1.0</anchor> でも実装によっては、サービス固有の管理画面で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">コールバックURL</anchor>
を指定したり、認める<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">コールバックURL</anchor> のパターンを指定できたりすることがあります。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OAuth 2.0</anchor> では<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>の登録時に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクトURL</anchor>を指定するのが原則とされています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> <code class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">javascript:</anchor></code> や <code class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">data:</anchor></code>
のような <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> が指定されるのを認めてしまうと、
意図しない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">起源</anchor>で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スクリプト</anchor>が実行されるなど<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">セキュリティー</anchor>上の問題が生じる虞があります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> 一般的でない <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL scheme</anchor> が指定されるのを無条件に認めてしまうと、
第三者への意図しない情報漏洩の注入の機会を生じさせてしまうかもしれず、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>は十分注意しなければなりません。</p><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> 例えば<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スマートフォンアプリ</anchor>向けの <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL scheme</anchor>
の指定を認めると、悪意のある第三者が他の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スマートフォンアプリ</anchor>の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL scheme</anchor>
を使う<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スマートフォンアプリ</anchor>を配布し、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">コールバックURL</anchor>
へのアクセスを“乗っ取る”ことができるかもしれません。</p></example><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">改行</anchor>が含まれる <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> を指定された場合にそれをそのまま 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Location:</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>に使い、
悪意のある<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>が任意の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTPヘッダー</anchor>を指定することを認めてしまう、
といったことがないよう<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>は注意が必要です。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OAuth 1.0</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">コールバックURL</anchor>へのアクセスが<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">資源所有者</anchor>の意思に基づき<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">資源所有者認可</anchor>から<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクト</anchor>されてきたものであり、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSRF</anchor> によって意図せず発生させられたものでないことを確認する必要があります <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;16</anchor-internal></src>。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">一時credentials要求</anchor>を <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OAuth</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>に送信させた<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">資源所有者</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">コールバックURL</anchor>
にアクセスしてきた<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">資源所有者</anchor>が同一であることは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OAuth</anchor>
仕様としては保証されませんから、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OAuth</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>側で確認が必要です。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">コールバックURL</anchor>には <code xmlns="http://www.w3.org/1999/xhtml" class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">oauth_verifier</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor>が追加されて<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクト</anchor>される
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> となりますが、悪意のある第三者が正当な方法で得た <code xmlns="http://www.w3.org/1999/xhtml" class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">oauth_verifier</anchor></code>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor>を付けた <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> を用意することが可能ですから、
<code xmlns="http://www.w3.org/1999/xhtml" class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">oauth_verifier</anchor></code> が有効な値であるかどうかと <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSRF</anchor>
であるか否かは無関係です。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="78" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[78]</anchor-end> 攻撃者は大量の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>に適当な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可符号</anchor>を与え、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可鯖</anchor>にアクセスさせることで、
間接的に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可鯖</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP接続</anchor>を枯渇させる <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DoS攻撃</anchor>を試みるかもしれません。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可鯖</anchor>には攻撃者の情報がほとんど届かず、対策が難しい攻撃です。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>は不適切な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可符号</anchor>があまりに多い<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者</anchor>のアクセスを拒むべきかもしれません <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="79" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;79</anchor-internal></src>。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可鯖</anchor>にアクセスする前に <code class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">state</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor>による <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSRF</anchor> の検査を行えば攻撃は多少難しくはなりますが、
攻撃者が事前に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可エンドポイント</anchor>の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>から得ておけば
<code class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">state</anchor></code> の値も得られているわけですから、
防止策として完全ではありません <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="79" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;79</anchor-internal></src>。</p><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="79" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[79]</anchor-end> <cite xml:lang="en">RFC 6819 - OAuth 2.0 Threat Model and Security Considerations</cite> (<time>2015-02-10 06:43:00 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc6819#section-4.4.1.12">http://tools.ietf.org/html/rfc6819#section-4.4.1.12</anchor-external></li></ul></refs><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="80" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[80]</anchor-end> 普通に使っていれば<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可符号</anchor>が不正になることなどないはずですから
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可符号</anchor>が発行されてから時間が経っていてタイムアウトしていた場合、
履歴から<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">戻る</anchor>などで使用済みの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可符号</anchor>付き<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクトURL</anchor>
に戻ってきた時や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">資源所有者</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>の間のネットワークエラーなどで<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可符号</anchor>付き<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクトURL</anchor>に再度アクセスがあった時、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可鯖</anchor>の間のネットワークエラーなどで<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可符号</anchor>が使用済みになった場合や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可鯖</anchor>に接続できなった場合くらいでしょうか。)、
一定時間内に数回、同じ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者エージェント</anchor>からの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認可符号</anchor>でエラーになったことを<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>内で記憶しておけば良さそうです。</comment-p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="81" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[81]</anchor-end> <code xmlns="http://www.w3.org/1999/xhtml"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">oauth_callback</anchor>=<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">oob</anchor></code> の時は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者</anchor>の入力ミスを考慮する必要があります。</comment-p><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="85" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[85]</anchor-end> <cite xml:lang="ja">Using OAuth 2.0 for Installed Applications - Google Accounts Authentication and Authorization — Google Developers</cite>
(<time>2014-12-05 11:52:26 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://developers.google.com/accounts/docs/OAuth2InstalledApp#choosingredirecturi">https://developers.google.com/accounts/docs/OAuth2InstalledApp#choosingredirecturi</anchor-external></figcaption><blockquote><p>http://localhost</p><p>This value signals to the Google Authorization Server that the authorization code should be returned as a query string parameter to the web server on the client. You may specify a port number without changing the Google Developers Console configuration. To receive the authorization code using this URL, your application must be listening on the local web server. This is possible on many, but not all, platforms. If your platform supports it, this is the recommended mechanism for obtaining the authorization code.</p><p>Note: In some cases, although it is possible to listen, other software (such as a Windows firewall) prevents delivery of the message without significant client configuration.</p><p>urn:ietf:wg:oauth:2.0:oob</p><p>This value signals to the Google Authorization Server that the authorization code should be returned in the title bar of the browser, with the page text prompting the user to copy the code and paste it in the application (as shown in the screenshot above). This is useful when the client (such as a Windows application) cannot listen on an HTTP port without significant client configuration.</p><p>When you use this value, your application can then detect that the page has loaded, and can read the title of the HTML page to obtain the authorization code. It is then up to your application to close the browser window if you want to ensure that the user never sees the page that contains the authorization code. The mechanism for doing this varies from platform to platform.</p><p>If your platform doesn't allow you to detect that the page has loaded or read the title of the page, you can have the user paste the code back to your application, as prompted by the page text.</p><p>urn:ietf:wg:oauth:2.0:oob:auto</p><p>This is identical to urn:ietf:wg:oauth:2.0:oob, but the text in the confirmation page won't instruct the user to copy the authorization code, but instead will simply ask the user to close the window.</p><p>This is useful when your application reads the title of the HTML page (by checking window titles on the desktop, for example) to obtain the authorization code, but can't close the page on its own.</p></blockquote></figure><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="90" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[90]</anchor-end> <cite>Authorize | Content API</cite>
(<time>2015-08-29 17:30:00 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://box-content.readme.io/reference#authorize">https://box-content.readme.io/reference#authorize</anchor-external></figcaption><blockquote><p>redirect_uri</p><p>required</p><p>An HTTPS URI or custom URL scheme where the response will be redirected. Must be https and also be registered within the Box app management console. In development, local http hosts are also accepted as outlined in the tutorial.</p><p>Type: uri</p></blockquote></figure><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="91" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[91]</anchor-end> <cite xml:lang="ja">Manually Build a Login Flow - Facebook Login</cite>
(<time>2016-03-03 14:15:58 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow">https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow</anchor-external></figcaption><blockquote><p>redirect_uri. The URL that you want to redirect the person logging in back to. This URL will capture the response from the Login Dialog. If you are using this in a webview within a desktop app, this must be set to https://www.facebook.com/connect/login_success.html.</p></blockquote></figure><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="92" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[92]</anchor-end> <cite xml:lang="en">Using OAuth 2.0 — Fitbit Web API Docs</cite>
(<time>2016-10-05 06:00:11 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://dev.fitbit.com/docs/oauth2/">https://dev.fitbit.com/docs/oauth2/</anchor-external></figcaption><blockquote><p>The redirect URI may use any protocol. If HTTP is used, Fitbit strongly recommends (and may require in the future) the use of a Transport Layer Security (TLS) protocol.</p><p>Note: When using the Authorization Code Grant Flow, Fitbit will also append #_=_ at the end of your redirect URI upon success or failure of the authorization.</p></blockquote></figure><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="93" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[93]</anchor-end> <cite xml:lang="en">documentation/API.md at master · tootsuite/documentation</cite>
(<time>2017-04-14 00:47:15 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/tootsuite/documentation/blob/master/Using-the-API/API.md">https://github.com/tootsuite/documentation/blob/master/Using-the-API/API.md</anchor-external></figcaption><blockquote><p>redirect_uris: Where the user should be redirected after authorization (for no redirect, use urn:ietf:wg:oauth:2.0:oob)</p></blockquote></figure></section></body></html>