JSON Web Token(JWT) 概要
7067 ワード
JSON Web Token(JWT)の概要記事。
JWTとは
- JSON Web Tokenの略称。
- 属性情報(
Claim
)をJSONデータ構造で表現したトークン仕様を指す。
JWTの構造
以下の例を用いて説明する。
eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ.dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk
.
で区切られたフィールドから構成される。-
<ヘッダー(Header)部>.<ペイロード(Payload)部>.<署名(Signature)部>
- 上記をJSON Web Signature (JWS)形式と呼ぶ。
- 5つのフィールドを持つ形式は、JSON Web Encryption (JWE)と呼ぶ。
ヘッダー.キー.初期ベクター.暗号文.認証タグ
ヘッダー部
署名検証に必要な情報を格納する。
JSONをBase64URLエンコードした文字列。
上述の例は、以下のJSONをエンコードしている。
{
"typ":"JWT",
"alg":"HS256"
}
-
typ
:JWT形式の文字列であることを表す。 -
alg
:署名アルゴリズムを表す。
ペイロード部
-
ペイロード:アプリ間のやりとりに必要な属性情報(
Claim
)- 事前定義されたクレーム※詳細はRFC参照
クレーム名 | 説明 |
---|---|
iss |
発行者 (issuer) を識別するための識別子。文字列 or URIを指定。 |
sub |
ユーザーの識別子。データベース内のユーザーテーブルのプライマリーキーが指定されることが多い。 |
aud |
JWT の受け取り手の識別子。発行を依頼したクライアントIDなど。 |
exp |
JWT の有効期限。 |
nbf |
JWTが有効になる日時。 |
iat |
JWTの発行日時。 |
jti |
JWTのユニーク性を保証する識別子。 |
-
Claim
をJSON形式で表現し、Base64urlエンコードした文字列。上記の例は、以下のJSONをエンコードしている。
{
"iss": "joe",
"exp": 1300819380,
"http://example.com/is_root": true
}
署名部
エンコードされたヘッダー、ピリオド(
.
)、エンコードされたペイロードを連結した値を入力としてalg
の署名アルゴリズムで署名し、Base64urlエンコードすることで作成した値。上記の例の場合、以下の値となる。
dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk
JWT活用事例
OAuth 2.0 Client Authentication and Authorization Grants
Authorization Grants
- アクセストークンのリクエストに利用する。
POST /token.oauth2 HTTP/1.1
Host: as.example.com
Content-Type: application/x-www-form-urlencoded
grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer&
assertion=eyJhbGciOiJFUzI1NiIsImtpZCI6IjE2In0.eyJpc3Mi[...omitted for brevity...].J9l-ZhwP[...omitted for brevity...]
-
grat_type
:urn:ietf:params:oauth:grant-type:jwt-bearer
を指定する。 -
assertion
:JWTを指定する。
Client Authentication
- クライアント認証を行う際、ID/シークレットの代わりに利用する。
POST /token.oauth2 HTTP/1.1
Host: as.example.com
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&
code=n0esc3NRze7LTCu7iYzS6a5acc3f0ogp4&
client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer&
client_assertion=eyJhbGciOiJSUzI1NiIsImtpZCI6IjIyIn0.eyJpc3Mi[...omitted for brevity...].cC4hiUPo[...omitted for brevity...]
-
client_assertion_type
:urn:ietf:params:oauth:client-assertion-type:jwt-bearer
を指定する。 -
client_assertion
:JWTを指定する。
Open ID Connect ID Token
- ユーザーの認証結果として発行するトークン
- ユーザー認証、ユーザー属性に関する
Claim
を格納する。
- ユーザー認証、ユーザー属性に関する
参考情報
Author And Source
この問題について(JSON Web Token(JWT) 概要), 我々は、より多くの情報をここで見つけました https://qiita.com/KWS_0901/items/00446f9df1cdaadf36fc著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .