<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="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> 
<dfn>JWS</dfn>
は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">電子署名</anchor>のための
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JSON応用</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="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> <cite xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 7515</anchor> - JSON Web Signature (JWS)</cite>, <time>2019-11-24 17:13:01 +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://tools.ietf.org/html/rfc7515">https://tools.ietf.org/html/rfc7515</anchor-external><ul><li><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> <cite xml:lang="en">RFC 7515 - JSON Web Signature (JWS)</cite>, <time>2020-03-29 16:13:43 +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://tools.ietf.org/html/rfc7515#section-2">https://tools.ietf.org/html/rfc7515#section-2</anchor-external></li><li><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> <cite xml:lang="en">RFC 7515 - JSON Web Signature (JWS)</cite>, <time>2020-03-29 16:13:43 +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://tools.ietf.org/html/rfc7515#section-3">https://tools.ietf.org/html/rfc7515#section-3</anchor-external></li><li><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> <cite xml:lang="en">RFC 7515 - JSON Web Signature (JWS)</cite>, <time>2020-03-29 16:13:43 +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://tools.ietf.org/html/rfc7515#section-4">https://tools.ietf.org/html/rfc7515#section-4</anchor-external><ul><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 7515 - JSON Web Signature (JWS)</cite>, <time>2020-03-29 16:13:43 +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://tools.ietf.org/html/rfc7515#section-4.1.11">https://tools.ietf.org/html/rfc7515#section-4.1.11</anchor-external></li></ul></li><li><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> <cite xml:lang="en">RFC 7515 - JSON Web Signature (JWS)</cite>, <time>2020-03-29 16:13:43 +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://tools.ietf.org/html/rfc7515#section-5">https://tools.ietf.org/html/rfc7515#section-5</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="129" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[129]</anchor-end> <cite xml:lang="en">RFC 7515 - JSON Web Signature (JWS)</cite>, <time>2020-03-29 16:13:43 +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://tools.ietf.org/html/rfc7515#section-6">https://tools.ietf.org/html/rfc7515#section-6</anchor-external></li><li><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> <cite xml:lang="en">RFC 7515 - JSON Web Signature (JWS)</cite>, <time>2020-03-29 16:13:43 +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://tools.ietf.org/html/rfc7515#section-7">https://tools.ietf.org/html/rfc7515#section-7</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="138" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[138]</anchor-end> <cite xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 7515</anchor> - JSON Web Signature (JWS)</cite>, <time>2020-03-29 16:13:43 +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://tools.ietf.org/html/rfc7515#section-8">https://tools.ietf.org/html/rfc7515#section-8</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="142" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[142]</anchor-end> <cite xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 7515</anchor> - JSON Web Signature (JWS)</cite>, <time>2020-03-29 16:13:43 +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://tools.ietf.org/html/rfc7515#section-9">https://tools.ietf.org/html/rfc7515#section-9</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="148" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[148]</anchor-end> <cite xml:lang="en">RFC 7515 - JSON Web Signature (JWS)</cite>, <time>2020-03-29 16:13:43 +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://tools.ietf.org/html/rfc7515#section-10">https://tools.ietf.org/html/rfc7515#section-10</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="150" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[150]</anchor-end> <cite xml:lang="en">RFC 7515 - JSON Web Signature (JWS)</cite>, <time>2020-03-29 16:13:43 +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://tools.ietf.org/html/rfc7515#appendix-D">https://tools.ietf.org/html/rfc7515#appendix-D</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="172" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[172]</anchor-end> <cite xml:lang="en">RFC 7515 - JSON Web Signature (JWS)</cite>, <time>2020-03-29 16:13:43 +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://tools.ietf.org/html/rfc7515#appendix-F">https://tools.ietf.org/html/rfc7515#appendix-F</anchor-external></li></ul></li><li><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> 
<cite xml:lang="en">RFC 7519 - JSON Web Token (JWT)</cite>, <time>2025-10-15T08:44:46.000Z</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://datatracker.ietf.org/doc/html/rfc7519#page-5">https://datatracker.ietf.org/doc/html/rfc7519#page-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="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> 
<dfn>JSON Web Signature</dfn> (<dfn>JWS</dfn>)
は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">デジタル</anchor>的に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 4949</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">署名<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">デジタル署名</title></anchor>されまたは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 4949</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MAC</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="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;8</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;22</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="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:">JWS</anchor> には、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">一貫性</anchor>保護のない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">非保安JWS</anchor>も含まれます。</comment-p><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:">JWS</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="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;22</anchor-internal></src></p><figure class="list members"><figcaption><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:">JWS</anchor></figcaption><dl><dt><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JOSEヘッダー</anchor></dt><dd>
次の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">合同</anchor>です。<figure class="list members"><dl><dt><dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS被保護ヘッダー<rt xmlns="http://www.w3.org/1999/xhtml">JWS Protected Header</rt></rubyb></dfn></dt><dd>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS署名</anchor>の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 4949</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">デジタル署名</anchor>または
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 4949</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MAC</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:">JSONオブジェクト</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="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;8</anchor-internal></src></dd><dt><dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS非被保護ヘッダー<rt xmlns="http://www.w3.org/1999/xhtml">JWS Unprotected Header</rt></rubyb></dfn></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>を含む
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JSONオブジェクト</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="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;8</anchor-internal></src></dd></dl></figure></dd><dt><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWSペイロード</anchor></dt><dd></dd><dt><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS署名</anchor></dt><dd></dd></dl></figure><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:">JOSEヘッダー</anchor>には、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS</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>は名前と値の組です。
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>JOSEヘッダー</anchor> </sw-see></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:">JOSEヘッダー</anchor>内の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー引数</anchor>の重複は認められません。
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>JOSEヘッダー</anchor> </sw-see>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS被保護ヘッダー</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS非被保護ヘッダー</anchor>の間でも同名があってはなりません (<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="46" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;46</anchor-internal>)。</p></section><section><h1>構文</h1><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:">JWS</anchor> は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 7159</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JSON</anchor> データや <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">base64url</anchor>
を使って記述されます。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JSON</anchor> は、その定めるところにより、
値の前後に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">空白</anchor>を挿入できます。 <sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>JSON</anchor> </sw-see>
<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="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;22</anchor-internal></src></p><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> 
<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWSペイロード<rt xmlns="http://www.w3.org/1999/xhtml">JWS Payload</rt></rubyb></dfn>は、
<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">保安される<rt xmlns="http://www.w3.org/1999/xhtml">secured</rt></rubyb><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">オクテット列</anchor>、<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">すなわち<rt xmlns="http://www.w3.org/1999/xhtml"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">aka</anchor></rt></rubyb><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>メッセージ</anchor><rt xmlns="http://www.w3.org/1999/xhtml">message</rt></rubyb>です。
<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="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;8</anchor-internal></src></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> 
<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS署名<rt xmlns="http://www.w3.org/1999/xhtml">JWS Signature</rt></rubyb></dfn>は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS保護ヘッダー</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWSペイロード</anchor>に関する <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 4949</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">デジタル署名</anchor>や 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 4949</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MAC</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="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;8</anchor-internal></src></p><p><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> 
<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS署名入力<rt xmlns="http://www.w3.org/1999/xhtml">JWS Signing Input</rt></rubyb></dfn>は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC  4949</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">デジタル署名</anchor>または <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 4949</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MAC</anchor> 計算への<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">入力</anchor>です。
この値は、</p><ol><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 20 ASCII<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">ASCII()</title></anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 7515 BASE64URL<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">BASE64URL()</title></anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3629 UTF8<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">UTF8()</title></anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS保護ヘッダー</anchor>)))</li><li><code>.<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">FULL STOP</title></code></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 7515 BASE64URL<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">BASE64URL()</title></anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWSペイロード</anchor>)</li></ol><p>... を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">順に連結<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">文字列連結</title></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="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;8</anchor-internal></src></p><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> 
<dfn>StringOrURI</dfn>
は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JSON文字列</anchor>値であって、
任意の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>値であっても<MAY xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構わない</MAY>ものの、
<code>:</code> が含まれる場合は
<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>
でなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ならない</MUST>ものです。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">比較<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">文字列の比較</title></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="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;8</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="50" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;50</anchor-internal></src></p><p><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> <code>alg</code> や <code>enc</code> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">耐衝突名</anchor>かつ <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">StringOrURI</anchor> 
(を含む文字列) とされています。</p><hr></hr><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="173" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[173]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS</anchor> のうち <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWSペイロード</anchor>を含めない、
つまり <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS</anchor> 生成後に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS簡潔直列化</anchor>にあっては該当部分を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">空文字列</anchor>とし、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS JSON直列化</anchor>にあっては <code>payload<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">JWSペイロード</title></code>
を削除したものを扱うのが時に有用なのであって、
受信者も別の手段で <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWSペイロード</anchor>相当の情報を入手し、
容易に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS</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="172" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;172</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="174" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[174]</anchor-end> 
しかしなぜか本体仕様とは別に簡単に説明されているに過ぎず、
しかも送受信者がそのような簡単な操作で標準的な <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS</anchor> 
のライブラリーの入出力を改変して実現可能だ、
と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS</anchor> 本体ではなく<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応用</anchor>側で実装するべきものとしています。
本当にそのような需要があるのなら、
こうした取ってつけた説明ではなく <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS</anchor>
本体仕様に組み込んで詳細に規定するべきで、不可解です。</p></section><section><h1>直列化</h1><p><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:">JWS</anchor>
は、
3種類の表現方法があります。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS</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><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">機能<rt xmlns="http://www.w3.org/1999/xhtml">feature</rt></rubyb>を使うかを、
規定する必要があります。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS</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="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;31</anchor-internal></src></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="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:">JWS JSON直列化</anchor>で署名か <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MAC</anchor> の値は1つだけ対応する」
のような定めが可能です。
<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="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;31</anchor-internal></src></p></example><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="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[26]</anchor-end> 
そのためただ「JWS を使う」「JWS に対応」とだけ言っても意味は通じません。
2つの 「JWS に対応」した実装が<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="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:">JWE</anchor> との区別は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JOSE</anchor> 参照。</p><section><h1>JWS簡潔直列化</h1><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> 
<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS簡潔直列化<rt xmlns="http://www.w3.org/1999/xhtml">JWS Compact Serialization</rt></rubyb></dfn>は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS</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="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;8</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:">JWS簡潔直列化</anchor>では、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS非保護ヘッダー</anchor>を使うことが出来ません。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JOSEヘッダー</anchor> = <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS保護ヘッダー</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="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;8</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;22</anchor-internal></src></p><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> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS簡潔直列化</anchor>は、
次のものを<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">順に連結<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">文字列連結</title></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="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;22</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;31</anchor-internal></src></p><ol><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 7515 BASE64URL<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">BASE64URL()</title></anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3629 UTF8<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">UTF8()</title></anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS保護ヘッダー</anchor>))</li><li><code>.<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">FULL STOP</title></code></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 7515 BASE64URL<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">BASE64URL()</title></anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWSペイロード</anchor>)</li><li><code>.<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">FULL STOP</title></code></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 7515 BASE64URL<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">BASE64URL()</title></anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS署名</anchor>)</li></ol><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:">署名</anchor>・<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MAC</anchor> は1つだけしか指定できません。 <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="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;31</anchor-internal></src></p></section><section><h1>JWS JSON直列化</h1><p><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> 
<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS JSON直列化<rt xmlns="http://www.w3.org/1999/xhtml">JWS JSON Serialization</rt></rubyb></dfn>は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS</anchor>
を
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JSONオブジェクト</anchor>として表現したものです。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS簡潔直列化</anchor>と違って、
複数の
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 4949</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">デジタル署名</anchor>と
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 4949</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MAC</anchor>
の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">一方又は両方<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">及び/又は</title></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="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;8</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:">JWS JSON直列化</anchor>では、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS保護ヘッダー</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS非保護ヘッダー</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="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;8</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;22</anchor-internal></src>。
どちらか一方は存在しなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST> <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="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;22</anchor-internal></src>。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JOSEヘッダー</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="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;8</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;22</anchor-internal></src>。</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> 一般構文と呼ばれるものと、平坦化構文と呼ばれるものの2種類があります。
<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="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;31</anchor-internal></src></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:">JSONオブジェクト</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>の重複と同様に処理するべきと思われます。
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>ヘッダー引数</anchor> </sw-see></p><section><h1>一般構文</h1><p><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> 
<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(完全)一般JWS JSON直列化構文<rt xmlns="http://www.w3.org/1999/xhtml">(fully) general JWS JSON serialization syntax</rt></rubyb></dfn>は、
次のような最上位の
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JSONオブジェクト</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="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;31</anchor-internal></src></p><figure class="list members"><figcaption><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JSONオブジェクト</anchor></figcaption><dl><dt><dfn><code>payload<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">JWS Payload</title></code></dfn></dt><dd>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 7516 BASE64URL<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">BASE64URL()</title></anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWSペイロード</anchor>)。
<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">必須</MUST>。
<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="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;31</anchor-internal></src></dd><dt><dfn><code>signatures</code></dfn></dt><dd>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JSONオブジェクト</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">配列</anchor>でなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。<figure class="list members"><figcaption><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:">JSON配列</anchor></figcaption><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:">JSONオブジェクト</anchor>は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWSペイロード</anchor>と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS保護ヘッダー</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">署名</anchor>や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MAC</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="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;31</anchor-internal></src><figure class="list members"><figcaption><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:">JSONオブジェクト</anchor></figcaption><dl><dt><dfn><code>protected<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">JWS保護ヘッダー</title></code></dfn></dt><dd>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS保護ヘッダー</anchor>値が空でない時、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 7515 BASE64URL<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">BASE64URL()</title></anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3629 UTF8<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">UTF8()</title></anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS保護ヘッダー</anchor>))
でなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー引数</anchor>値は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">一貫性</anchor>保護されます。
そうでないとき、
省略しなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。
<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="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;31</anchor-internal></src></dd><dt><dfn><code>header<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">JWS非保護ヘッダー</title></code></dfn></dt><dd>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS非保護ヘッダー</anchor>値が空でない時、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS非保護ヘッダー</anchor>たる <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JSON</anchor> 値でなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー引数</anchor>値は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">一貫性</anchor>保護されません。
そうでないとき、
省略しなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。
<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="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;31</anchor-internal></src></dd><dt><dfn><code>signature<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">JWS Signature</title></code></dfn></dt><dd>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 5715 BASE64URL<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">BASE64URL()</title></anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS署名</anchor>)
でなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。
<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="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;31</anchor-internal></src></dd><dt>その他</dt><dd>
他のメンバーを指定できます。
実装は、理解できないものを無視しなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。
<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="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;31</anchor-internal></src></dd></dl></figure></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> 
<code>protected<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">JWS保護ヘッダー</title></code> または <code>header<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">JWS非保護ヘッダー</title></code>
の一方または両方がなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。
最低でも <code>alg</code> <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="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;31</anchor-internal></src></p><p><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> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">署名</anchor>や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MAC</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>protected<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">JWS保護ヘッダー</title></code> と
<code>header<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">JWS非保護ヘッダー</title></code>
を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">合同</anchor>して得られる
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JOSEヘッダー</anchor>です。
両者の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー引数</anchor>の名前は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">互いに素<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">disjoint</title></anchor>でなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。
<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="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;31</anchor-internal></src></p></figure></dd><dt>その他</dt><dd>
他のメンバーを指定できます。
実装は、理解できないものを無視しなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。
<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="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;31</anchor-internal></src>
(<code>protected<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">JWS保護ヘッダー</title></code>,
<code>header<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">JWS非保護ヘッダー</title></code>,
<code>signature<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">JWS Signature</title></code>
も禁止はされていません。)</dd></dl></figure></section><section><h1>平坦化構文</h1><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> 
<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">平滑化JWS JSON直列化構文<rt xmlns="http://www.w3.org/1999/xhtml">flattened JWS JSON serialization syntax</rt></rubyb></dfn>は、
単一の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">デジタル署名</anchor>・ <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MAC</anchor> の場合に最適化したもので、
次のような最上位
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JSONオブジェクト</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="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;31</anchor-internal></src></p><figure class="list members"><figcaption><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:">JSONオブジェクト</anchor></figcaption><dl><dt><code>payload<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">JWS Payload</title></code></dt><dd>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 7516 BASE64URL<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">BASE64URL()</title></anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWSペイロード</anchor>)。
<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">必須</MUST>。
<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="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;31</anchor-internal></src></dd><dt><code>protected<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">JWS保護ヘッダー</title></code></dt><dd>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS保護ヘッダー</anchor>値が空でない時、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 7515 BASE64URL<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">BASE64URL()</title></anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3629 UTF8<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">UTF8()</title></anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS保護ヘッダー</anchor>))
でなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー引数</anchor>値は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">一貫性</anchor>保護されます。
そうでないとき、
省略しなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。
<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="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;31</anchor-internal></src></dd><dt><code>header<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">JWS非保護ヘッダー</title></code></dt><dd>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS非保護ヘッダー</anchor>値が空でない時、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS非保護ヘッダー</anchor>たる <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JSON</anchor> 値でなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー引数</anchor>値は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">一貫性</anchor>保護されません。
そうでないとき、
省略しなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。
<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="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;31</anchor-internal></src></dd><dt><code>signature<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">JWS Signature</title></code></dt><dd>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 5715 BASE64URL<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">BASE64URL()</title></anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS署名</anchor>)
でなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。
<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="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;31</anchor-internal></src></dd><dt>その他</dt><dd>
他のメンバーを指定できます。
実装は、理解できないものを無視しなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。
<code>signatures</code> があっては<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。
<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="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;31</anchor-internal></src></dd></dl></figure><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> 
<code>protected<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">JWS保護ヘッダー</title></code> または <code>header<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">JWS非保護ヘッダー</title></code>
の一方または両方がなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。
最低でも <code>alg</code> <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="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;31</anchor-internal></src></p><p><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> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">署名</anchor>や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MAC</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>protected<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">JWS保護ヘッダー</title></code> と
<code>header<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">JWS非保護ヘッダー</title></code>
を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">合同</anchor>して得られる
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JOSEヘッダー</anchor>です。
両者の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー引数</anchor>の名前は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">互いに素<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">disjoint</title></anchor>でなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。
<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="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;31</anchor-internal></src></p></section></section></section><section><h1>処理</h1><section><h1>作成</h1><p><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> 
<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWSを作成<rt xmlns="http://www.w3.org/1999/xhtml">create a JWS</rt></rubyb></dfn>するには、
<var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWSペイロード</anchor></var>、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JSONオブジェクト</anchor>または <code>null</code> <var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS保護ヘッダー</anchor></var>、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JSONオブジェクト</anchor>または <code>null</code> <var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS非保護ヘッダー</anchor></var>を、
次のようにします。
<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="81" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;81</anchor-internal></src></p><figure class="steps"><ol><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Assert</anchor>: <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JOSEヘッダー</anchor> (<var>JWS保護ヘッダー</var>と<var>JWS非保護ヘッダー</var>)
には <code>alg</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー引数</anchor>が含まれなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。</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> <var>符号化ペイロード値</var>を、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 7515 BASE64URL<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">BASE64URL()</title></anchor> (<var>JWSペイロード</var>) の結果に設定します。</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> <var>符号化ヘッダー値</var>を、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">空文字列</anchor>に設定します。</li><li><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> <var>符号化ヘッダー値</var>が <code>null</code> で<em>ない</em>場合、<ol><li><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:">RFC 7515 BASE64URL<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">BASE64URL()</title></anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3629 UTF8<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">UTF8()</title></anchor> (<var>JWS保護ヘッダー</var>))
の結果に設定します。</li></ol></li><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> 
<var>JWS署名</var>を、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS署名</anchor>を計算した結果に設定します。<figure class="list members"><dl><dt><var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS署名入力</anchor></var></dt><dd>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 20 ASCII<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">ASCII()</title></anchor> (<var>符号化ヘッダー値</var>)、
<code>.<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">FULL STOP</title></code>、
<var>符号化ペイロード値</var>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">順に連結<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">文字列連結</title></anchor>した結果</dd><dt><var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JOSEヘッダー</anchor></var></dt><dd><var>JWS保護ヘッダー</var>と<var>JWS非保護ヘッダー</var></dd></dl></figure></li><li><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> 
<var>符号化署名値</var>を、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 7515 BASE64URL<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">BASE64URL()</title></anchor> (<var>JWS署名</var>)
の結果に設定します。</li><li><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> 
<var>符号化保護ヘッダー</var>、
<var>JWS非保護ヘッダー</var>、
<var>符号化ペイロード値</var>、
<var>符号化署名値</var>について、
直列化した結果を返します。</li></ol></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="128" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[128]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">BOM</anchor> を生成するべきか否か仕様書から明らかではありません。一般的には
<cite>Encoding Standard</cite> の
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-8符号化</anchor>のように <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">BOM</anchor> を生成しないものと解されています。</p></section><section><h1>検証</h1><p><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> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS</anchor> を<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">検証<rt xmlns="http://www.w3.org/1999/xhtml">validate</rt></rubyb>するには、
<var>JWS</var> を、
次のようにします。
<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="81" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;81</anchor-internal></src></p><figure class="steps"><ol><li><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> 
<var>結果</var>を、 <var>JWS</var> を構文解析した結果に設定します。</li><li><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> <var>結果</var>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">失敗</anchor>の場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="94" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[94]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">偽</anchor>を返し、ここで停止します。</li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="95" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[95]</anchor-end> <var>ヘッダーバイト列</var>を、
<var>結果</var>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号化ヘッダー値</f>を <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 7515 base64url復号</anchor>した結果に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="96" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[96]</anchor-end> <var>ヘッダーバイト列</var>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">失敗</anchor>の場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="97" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[97]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">偽</anchor>を返し、ここで停止します。</li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="99" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[99]</anchor-end> <var>ヘッダー文字列</var>を、
<var>ヘッダーバイト列</var>を 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3629</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-8</anchor>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">復号</anchor>した結果に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="100" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[100]</anchor-end> <var>ヘッダー文字列</var>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">失敗</anchor>の場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="101" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[101]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">偽</anchor>を返し、ここで停止します。</li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="98" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[98]</anchor-end> <var>JWS保護ヘッダー</var>を、
<var>ヘッダー文字列</var>を <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 7159</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JSON</anchor> として構文解析した結果に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="102" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[102]</anchor-end> <var>JWS保護ヘッダー</var>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JSONオブジェクト</anchor>で<em>ない</em>場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="103" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[103]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">偽</anchor>を返し、ここで停止します。</li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="104" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[104]</anchor-end> <var>結果</var>の <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS非保護ヘッダー</f>が <code>null</code> で<em>ない</em>場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="105" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[105]</anchor-end> <var>結果</var>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS非保護ヘッダー</f>のメンバーと<var>JWS保護ヘッダー</var>のメンバーについて、
メンバー名 (= <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー引数</anchor>名) に重複がある場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="106" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[106]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">偽</anchor>を返し、ここで停止します。</li></ol></li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="107" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[107]</anchor-end> <var>結果</var>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS保護ヘッダー</f>と<var>JWS保護ヘッダー</var>について、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS</anchor> の規定により対応しなければならないとされるもの、
指定された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アルゴリズム</anchor>により対応しなければならないとされるもの、
<code>crit</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>であること、
その値もまた理解し処理できるものであることを確認します。そうでない場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="108" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[108]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">偽</anchor>を返し、ここで停止します。</li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="109" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[109]</anchor-end> <var>ペイロードバイト列</var>を、
<var>結果</var>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号化ペイロード値</f>を <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 7515 base64url復号</anchor>した結果に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="110" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[110]</anchor-end> <var>ペイロードバイト列</var>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">失敗</anchor>の場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="111" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[111]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">偽</anchor>を返し、ここで停止します。</li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="112" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[112]</anchor-end> <var>署名バイト列</var>を、
<var>結果</var>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号化署名値</f>を <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 7515 base64url復号</anchor>した結果に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="113" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[113]</anchor-end> <var>署名バイト列</var>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">失敗</anchor>の場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="114" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[114]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">偽</anchor>を返し、ここで停止します。</li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="115" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[115]</anchor-end> 
<var>JWS署名</var>を、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS署名</anchor>を計算した結果に設定します。<figure class="list members"><dl><dt><var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS署名入力</anchor></var></dt><dd>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 20 ASCII<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">ASCII()</title></anchor> (<var>結果</var>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号化ヘッダー値</f>)、
<code>.<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">FULL STOP</title></code>、
<var>結果</var>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号化ペイロード値</f>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">順に連結<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">文字列連結</title></anchor>した結果</dd><dt><var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JOSEヘッダー</anchor></var></dt><dd><var>JWS保護ヘッダー</var>と<var>結果</var>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS非保護ヘッダー</f></dd></dl></figure></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="116" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[116]</anchor-end> <var>署名バイト列</var>が<var>JWS署名</var>で<em>ない</em>場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="117" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[117]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">偽</anchor>を返し、ここで停止します。</li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="119" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[119]</anchor-end> <var>ペイロード文字列</var>を、
<var>ペイロードバイト列</var>を 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3629</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-8</anchor>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">復号</anchor>した結果に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="120" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[120]</anchor-end> <var>ペイロード文字列</var>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">失敗</anchor>の場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="121" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[121]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">偽</anchor>を返し、ここで停止します。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">仕様書になし</src></li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="122" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[122]</anchor-end> <var>JWSペイロード</var>を、
<var>ペイロード文字列</var>を <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 7159</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JSON</anchor>として構文解析した結果に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="123" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[123]</anchor-end> <var>JWSペイロード</var>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JSONオブジェクト</anchor>で<em>ない</em>場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="124" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[124]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">偽</anchor>を返し、ここで停止します。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">仕様書になし</src></li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="118" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[118]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">真</anchor>、
<var>JWS保護ヘッダー</var>、
<var>結果</var>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS非保護ヘッダー</f>、
<var>JWSペイロード</var>を返します。</li></ol></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="125" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[125]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS署名</anchor>が複数含まれる時、
どれを検証するか、すべてを検証するかは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応用</anchor>が決めることとされています。
最低でも1つは検証し<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">真</anchor>を返すことを確認しなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。
<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="81" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;81</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="126" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[126]</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>の期待するものでなければ、
非妥当とみなす<SHOULD xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べきです</SHOULD>。
<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="81" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;81</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="127" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[127]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-8</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JSON</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>の厳密な解釈に従うことは避け、
明確な規定のある <cite>Encoding Standard</cite> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">BOMなしUTF-8復号または失敗</anchor>や 
<cite>ECMAScript</cite> <code>JSON.stringify</code> に倣うべきでしょう。</p></section><section><h1>アルゴリズムと鍵</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="134" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[134]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS署名</anchor>の計算に使われる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アルゴリズム</anchor>は、
<code>alg</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>は、これを指定しなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。
<code>alg</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:">妥当</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="47" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;47</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>します。</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="135" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[135]</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>を明確かつ限定的に規定しなければなりません。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="149" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[149]</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:">JWS署名</anchor>値内に含まれる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アルゴリズム</anchor>を使って検証する場合があります。
その場合でもそれが <code>alg</code> と一致しているか確認しなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。
さもなくば <code>alg</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="148" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;148</anchor-internal></src></p><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:">JOSE鍵識別</anchor></p></section></section><section><h1>MIME 型</h1><p><sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>JOSE</anchor> </sw-see></p></section><section><h1>応用</h1><figure class="short list"><figcaption><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応用</anchor></figcaption><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWT</anchor><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">VAPID</anchor></li></ul></li></ul></figure><p><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:">JAdES</anchor></p></section><section><h1>関連</h1><p><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> 関連記事:
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JOSE</anchor>, 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWE</anchor></p></section><section><h1>歴史</h1><p><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> <cite xml:lang="en">JSON Web Signature (JWS)</cite>
( (<time>2011-12-14 23:15:42 +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://openid.net/specs/draft-jones-json-web-signature-04.html">http://openid.net/specs/draft-jones-json-web-signature-04.html</anchor-external></p><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> <cite xml:lang="en">draft-ietf-jose-json-web-signature-19 - JSON Web Signature (JWS)</cite>
( (<time>2013-12-29 22:15:32 +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/draft-ietf-jose-json-web-signature-19">http://tools.ietf.org/html/draft-ietf-jose-json-web-signature-19</anchor-external></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> 
<time>2015年5月<attrvalue xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">2015-05</attrvalue></time>、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IETF</anchor>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">提案標準</anchor>
<dfn>RFC 7515</dfn>
として出版されました。</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> <cite xml:lang="en">RFC 7797 - JSON Web Signature (JWS) Unencoded Payload Option</cite>
(<time>2016-03-31 02:08:14 +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://tools.ietf.org/html/rfc7797">https://tools.ietf.org/html/rfc7797</anchor-external></p><p><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> <cite xml:lang="en">RFC 8055 - Session Initiation Protocol (SIP) Via Header Field Parameter to Indicate Received Realm</cite>
(<time>2017-02-03 01:02:37 +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://tools.ietf.org/html/rfc8055">https://tools.ietf.org/html/rfc8055</anchor-external></p></section></body></html>