JSON Web Token

JSON Web Token

Mobage JS SDK で用いられている JSON Web Token (JWT) とは、現在 IETF で策定中の仕様で執筆時現在の最新仕様は JSON Web Token (JWT) draft-ietf-oauth-json-web-token-15 になります。

JWT とは二者間でデータをやり取りする際のデータ表現で、本文は JSON object です (正確には JWT Claims Set と言います)。

JWT では、この JSON object に対して JSON Web Signature (JWS) によって署名が成されているか、または JSON Web Encryption (JWE) によって暗号化されています。Mobage JS SDK で取り扱う JWT は常に JWS 形式で、その署名形式は JWT Header に記載されており、alg フィールドで指定されています。現在は RS256 という署名アルゴリズムのみが指定されます。

JWT 形式を取り扱うライブラリは様々な言語で揃っています。たとえば、下記のような言語別ライブラリがあります。なお、利用方法は各ライブラリのドキュメントを参照して下さい。

各言語の JWT library

JWT の検証

JWT 中の JWT Claims Set には幾つかの予約 Claims があります。これらについては 4.JWT Claims を参照して下 さい。

Mobage JS SDK で用いる JWT Claims Set は多くの場合で下の表に示す意味になります。

Mobage JS SDK で用いる JWT Claims Set
ClaimType意味
jtistringJWT のユニーク識別子
issstringJWT を発行したサーバーの URI
audstringこの JWT を利用出来る Client の Client Identifier
substringこの JWT の主体となる Mobage ユーザーの User ID
iatintegerこの JWT が発行された日時を表す UNIX Timestamp 値
expintegerこの JWT が無効になる日時を表す UNIX Timestamp 値

iss フィールドに関しては取り扱う JWT ごとに異なり、またその JWT が service/sandbox 環境のいずれかを判断する指標にもなります。現在 Mobage JS SDK で利用する JWT の発行者 (Issuer) を表す iss プロパティの値は以下に示す通りです。 

Issuer と環境別の iss の値
Issuer環境iss の値
Mobage Connectsandboxhttps://sb-connect.mobage.jp
servicehttps://connect.mobage.jp
Widget Servicesandboxhttps://sb-widget.mobage.jp
servicehttps://widget.mobage.jp
Async Confirmationsandboxhttps://sb-hub.mobage.jp
servicehttps://hub.mobage.jp

その上で以下の観点で JWT Claims Set を検証する必要があります。 

  • iss が表「Issuer と環境別の iss の値」に記載された値に合致するかどうか
  • aud がアプリケーションの Client Identifier に一致するかどうか
  • iat が現在日時より過去かどうか
  • exp が現在日時より未来かどうか

より汎用的な検証コードとしては下記 Perl で書かれたサンプルを参照して下さい。なお、Public Key の値は最後の「署名形式が RS256 の場合の公開鍵」に記載されています。 

JWS の署名生成アルゴリズムは、RS256 です。以下のように必ずヘッダに含まれる alg が RS256 となっていることを確認してください。


署名形式が RS256 の場合の公開鍵 

JWT Claims が妥当であり、JWT Header alg フィールドが RS256 の場合は、この iss の値に応じて Public Key を選択し signature の検証を行います。

各環境における Public Key の値は、PKCS#1 形式X509 形式別に記載します。

sandbox 環境の RS256 public key(PKCS#1 形式

sandbox 環境の RS256 public key(X509 形式

 

service 環境の RS256 public key(PKCS#1 形式

 

service 環境の RS256 public key(X509 形式

 

PREVIOUS

用語集

NEXT

API リファレンス