Open1
JWTの導入(JsonWebToken)
JWT
Json web tokenて何
3つの要素から構成されている
- ヘッダ:ハッシュアルゴリズムの情報などのメタデータ
- ペイロード: 認証対象の情報でユーザー名やIDなどの任意の情報
- 署名: ヘッダとペイロードをbase64エンコードしたものに秘密鍵を加えてハッシュ化したもの
- 要素ごとにbase64エンコードされていて上記3つをピリオド(.)で繋いだものがJWTである
JWTを使用した認証
- JWTを取得する
サーバーに対してUsername/Passwordを送る
サーバー側は認証情報を検証し、問題がなければ秘密鍵を使ってTokenを生成しクライアントへ返す
クライアントはJWTを受け取り、ローカルストレージなどに保存する - JWTの認証
JWTをAuthorizationヘッダにつけてリクエストを投げる
サーバー側はTokenを検証し、ID、Usernameを返却する
JWTのメリット
- 署名が含まれているので改ざんのチェックができる
- 有効期限をつけるなどセキュアなToken発行を行える
- セッションとは異なり、状態をサーバで管理する必要がない
- 任意のデータをTokenに含めることができる