JWT 認証
JSON Web Token(JWT)は、 HTTP AuthorizationヘッダーやURIクエリーパラメーターなど、スペースに制約のある環境向けのコンパクトなクレーム表現フォーマットです。 クレームは、クレーム名とクレーム値を含む名前と値のペアとして表されます。
JWT 内のクレームは、JSON Web 署名 (JWS) 構造のペイロードとして、または JSON Web 暗号化 (JWE) 構造のプレーン・テキストとして使用される JSON オブジェクトとしてエンコードされます。 JWT クレームは、メッセージ認証コード (MAC) を使用してデジタル署名または保全性保護することができます。また、暗号化することもできます。
JWT の概要
JWT は、JWS または JWE 構造でエンコードされる JSON オブジェクトとしてクレームのセットを表します。 この JSON オブジェクトは、JWT クレーム・セットです。 JSON オブジェクトは、ゼロ個以上の名前と値のペア (またはメンバー) で構成されます。ここで、名前はストリングで、値は任意の JSON 値です。 これらのメンバーは、JWT によって表されるクレームです。 JWT クレーム・セット内のメンバー名は、クレーム名と呼ばれます。 対応する値は、請求値と呼ばれます。
JWTは、ピリオド('.')文字で区切られた URL部分のシーケンスとして表現される。 各部分には、 base64url-encoded値が含まれます。 JWT 内のパーツの数は、JWS コンパクト・シリアライゼーションを使用した結果の JWS の表現、または JWE コンパクト・シリアライゼーションを使用した結果の JWE の表現によって異なります。
JWT のタイプ
JWT の例
典型的なJWSのフォーマットは、<Base 64 URL エンコードされたHeader json>.<Base 64 URKエンコードされたPayload json>.<Base 64 URL エンコードされた署名> である
Header
{
"alg": "RS256",
"typ": "JWT",
"kid": "a1"
}
Payload
{
"sub": "1234567890",
"name": "John Doe",
"admin": true,
"iat": 1516239022,
"exp": 1531762065
}eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImExIn0
.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwiZXhwIjoxNTMxNzYyMDY1fQ
.z4qfO0leZK2mYp_w-jFNidTx-Ri0PRMHLsOAG1Den7ZR4QntIJhU17U0afgoe5VzISXS6jW61ga3XEk39ey1G7a_-ARIVZLYN11fHDhsPuzN7PPkbT
5uWpHEUhVWRR8dxHqXmNiDaWjNhTnzHCBpfrRHj5pR_dzubbuE_uPuvDkサンプルに示されているように、JWS には以下の部分があり、「.」で区切られています。 文字。
- ヘッダー =
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImExIn0 - ペイロード =
G4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwiZXhwIjoxNTMxNzYyMDY1fQ - 署名 =
z4qfO0leZK2mYp_w-jFNidTx-Ri0PRMHLsOAG1Den7ZR4QntIJhU17U0afgoe5VzISXS6jW61ga3XEk39ey1G7a_-ARIVZLYN11fHDhsPuzN7PPkbT5uWpHEUhVWRR8dxHqXmNiDaWjNhTnzHCBpfrRHj5pR_dzubbuE_uPuvDk