0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

JWTとは

Posted at

はじめに

JWTとは、JSON Web Tokenの略です。Webサービス間で情報を安全に送受信するための仕組みです。

JSONとは

JSONとは、JavaScript Object Notationの略です。JavaScriptのオブジェクトを文字列に変換したものです。

JavaScriptのオブジェクトは、キーと値のペアで構成されています。JSONも同様に、キーと値のペアで構成されています。

JSONの例

{
  "name": "Taro",
  "age": 20,
  "address": "Tokyo"
}

Tokenとは

Tokenとは、認証情報や権限などの情報を表す文字列です。認証情報や権限などの情報を含んだ文字列をTokenと呼びます。

以下のような暗号化された文字列です。

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

JWTの構造

JWTの構造は、以下のようになっています。

header.payload.signature

header

headerは、JWTの情報を表す部分です。この例では、HS256というアルゴリズムを使用していることを表しています。

{
  "alg": "HS256",
  "typ": "JWT"
}

payload

payloadは、Tokenに含める情報を記載した部分です。

JWTのpayloadの例

{
  "username": "test",
  "iat": 1594628423,
  "exp": 1594628428
}

この例では有効期限の情報を持っています。
iatは、Tokenが作成された日時を表します。expは、Tokenの有効期限を表します。

signature

signatureは、headerとpayloadを組み合わせて、秘密鍵を使ってハッシュ化した部分です。

JWTのsignatureの例

TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

このsignature

JWTの利用

JWTは、認証情報や権限などの情報を含んだ文字列です。JWTを利用することで、認証情報や権限などの情報を安全に送受信することができます。

JWTの利用例

JWTの利用例として、以下のようなものがあります。

  • セッション管理
  • 認証情報の送受信
  • 権限の制御

JWTを使用する流れ

  1. ユーザーがログインする
  2. ユーザーのログイン情報をJWTに変換する
  3. JWTをCookieに保存する
  4. ユーザーがログインしているかを確認するたびに、JWTをCookieに保存する
  5. JWTの情報を使って何らかの処理を分岐する。

JWTのメリット

JWTのメリットとして、以下のようなものがあります。

  • トークンに認証情報や権限などの情報を持つことができる
  • トークンに有効期限を設定することができる
  • 公開鍵暗号に基づくメッセージ認証コード(MAC)により、改竄やすり替え(なりすまし)が行われていないことを確認できる。

JWTのデメリット

JWTのデメリットとして、以下のようなものがあります。

  • 一度認可したJWTを無効化扱いすることはできない
  • トークンの有効期限が切れてしまうと、再度ログインしなければならない
  • 有効期限を短くしたり、即時無効化する必要がある場合は別途仕組みを用意する必要あり

参考

JSON Web Token - Wikipedia
JWT(JSON Web Token)とは - 意味をわかりやすく - IT用語辞典 e-Words
JSON Web Token(JWT)の紹介とYahoo! JAPANにおけるJWTの活用 - Yahoo! JAPAN Tech Blog

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?