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

JWTの仕組み
JWTは、以下の3つのパーツで構成されます。
- ヘッダー(Base64文字列)
- クレーム情報、つまりデータ本体(Base64文字列)
- 署名(バイナリ文字列)
JWT認証の流れ

- ユーザーがログインをする。
- サーバーでユーザーを確認後、ユーザーの固有IDを与え、その他の情報とともにPayloadに保存する。
- JWTトークンと有効期限を設定する。
- 暗号化するSECRET KEYを利用してAccess Tokenを発行する。
- ユーザーはAccess Tokenを受け取り、保存して認証が必要なリクエストにトークンをヘッダに載せて送る。
- サーバーでは該当トークンのVerify SignatureをSECRET KEYで復号化して有効期限などを確認
- 検証が完了したら、PayloadをデコーディングしてユーザーのIDのデータを持ってくる。
終わりに
今回はJWTについて調べてみました。
Gradleプロジェクトで使うためには、以下のように依存性を追加する必要があります。
implementation 'io.jsonwebtoken:jjwt:0.9.1'
でも、実際使い方については次回、サイドプロジェクトをやりながら書いていこうと思っているので、お楽しみに!
