JWTとは

今回は、JWT(トークン基盤認証方法)についてまとめていきたいと思っています。

JWTとは

  • Json Web Tokenの略語です。
  • JWT(ジョット)とは JSON Web Token の略で、電子署名付きの URL-safe(URLとして利用出来る文字だけ構成される)な JSONのことです。
  • 電子署名により、JSON の改ざんをチェックできるようになっています。
  • 認証に必要な情報を暗号化したトークンです。
  • Access Token(JWTトークン)をHTTPヘッダに載せてサーバに送ります。
jwt.io

JWTの仕組み

JWTは、以下の3つのパーツで構成されます。

  • ヘッダー(Base64文字列)
  • クレーム情報、つまりデータ本体(Base64文字列)
  • 署名(バイナリ文字列)

JWT認証の流れ

  1. ユーザーがログインをする。
  2. サーバーでユーザーを確認後、ユーザーの固有IDを与え、その他の情報とともにPayloadに保存する。
  3. JWTトークンと有効期限を設定する。
  4. 暗号化するSECRET KEYを利用してAccess Tokenを発行する。
  5. ユーザーはAccess Tokenを受け取り、保存して認証が必要なリクエストにトークンをヘッダに載せて送る。
  6. サーバーでは該当トークンのVerify SignatureをSECRET KEYで復号化して有効期限などを確認
  7. 検証が完了したら、PayloadをデコーディングしてユーザーのIDのデータを持ってくる。

終わりに

今回はJWTについて調べてみました。

Gradleプロジェクトで使うためには、以下のように依存性を追加する必要があります。

implementation 'io.jsonwebtoken:jjwt:0.9.1'

でも、実際使い方については次回、サイドプロジェクトをやりながら書いていこうと思っているので、お楽しみに!

コメントを残す