Open1

JWTの導入(JsonWebToken)

TkTk

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に含めることができる