1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JWTとは 備忘録

Posted at

こちらのサイトを見て学びます

JSON Web Tokenとは

JSONオブジェクトとして関係者感で情報を安全に送信するための方法

JWTをいつ利用するか

主に認証で使われる
ユーザーがログインすると、各リクエストにはJWTが含まれ、ユーザーはそのトークンで許可されているルート、サービス、リソースにアクセスすることができるようになる。また異なるドメイン間で利用することができるため、広く利用されている

JWTの構造

  1. ヘッダ
  2. ペイロード
  3. サイン
    がある

xxxxx.yyyyy.zzzzz こんな感じ

ヘッダ

トークンのタイプと使用されている署名アルゴリズムの2つの部分で構成される

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

このJSONはBase64Urlでエンコードされる

ペイロード

クレームというユーザーやデータに関するもの
クレームは登録済み、パブリック、プライベートの3種類がある
Base64Urlでエンコードされる

  • 登録済み
    必須ではないが、定義済みのクレーム
    iss(発行者), exp(有効期限), sub(件名)などの3文字のもの

  • パブリック
    JWTを使用するユーザーが自由に定義できる

  • プライベート
    使用に同意する当事者感で情報を共有するために作成されたもの
    以下は例

{
  "sub": "1234567890",
  "name": "John Doe",
  "admin": true
}

サイン

署名部分を作成するには、エンコードされたヘッダー、エンコードされたペイロード、秘密、ヘッダーで指定されたアルゴリズムを取得し、それに署名する必要がある
署名は、メッセージが途中で変更されていないことを確認するために使用され、秘密鍵で署名されたトークンの場合は、JWT の送信者がその送信者本人であることを確認することもできる

HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  secret)

JWTはどのように使用されるか

認証では、ユーザーが資格情報を使用して正常にログインすると、JSON Webトークンが返される。トークンは資格情報であるため、一般にトークンは必要以上に長く保持してはいけない。

ユーザーエージェントはBearerスキーマを使用してAuthorizationヘッダーでJWTを送信する

Authorization: Bearer <token>

トークンがAuthorizationヘッダーで送信される場合、Cookieを使用しないため、CORSにならない

まとめ

出力はドットで区切られた 3 つの Base64 URL 文字列であり、HTML および HTTP 環境で簡単に渡すことができる。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?