blog

JWTについて

JWTの構造WTは、暗号化された文字の文字列です。文字列は、説明するために、次のケースを再順序で3つの部分に分割されます。...

Jan 13, 2021 · 2 min. read
シェア

JWT

https://jwt.io/

JWT

JWTは暗号化された文字列で、.NET Frameworkによって3つの部分に分割されます。文字列を3つの部分に順番に分割します。

  1. Header
  2. Payload
  3. Signature

各パーツが何を表しているのか、ケーススタディで説明しましょう。

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Header

Base64暗号化を介してJWTを記述するために使用されるメタ情報

復号化コンテンツ

{
 "alg": "HS256", // 署名アルゴリズムは、デフォルトのアルゴリズムは、HS256である。
 "typ": "JWT" // トークンの種類
}

Payload

また、送信されるデータや情報を記述するために使用されるBase64によって暗号化されます。

復号化コンテンツ

{
 "sub": "",
 "name": "John Doe",
 "iat": 
}

Payloadには公式フィールドが用意されており、ユーザーはカスタムフィールドを追加することもできます!

  1. iss発行者
  2. sub
  3. aud
  4. exp:有効期限
  5. nbf:有効時間
  6. iat発行時間
  7. jti

Signature

コンテンツの最初の2つの部分はBase64で暗号化されているため、送信プロセスで内部のコンテンツを復号化するのは簡単ですが、改ざんを防ぐために、コンテンツが改ざんされていないことを確認するためのデジタル署名を追加します。

暗号化には秘密鍵が必要です。

HMACSHA256(
 base64UrlEncode(header) + "." +
 base64UrlEncode(payload),
 your-256-bit-secret
) 

JWT

JWT

  1. トークンはクライアントに存在するため、サーバーはそれをデコードするだけでよく、サーバーのスペースを占有しません。
  2. サーバーは簡単に拡張可能
  3. 改ざん防止のための署名検証

JWT

  1. トークンを積極的に無効にする方法はありません。
  2. データレイテンシー:ユーザー情報が更新された後、ユーザーがトークンを使用している場合、サーバーはまだユーザー情報を取得します。
  3. 透明なコンテンツ、機密データには不向き
  4. トークンはセッション ID よりも多くのコンテンツを含み、より多くのネットワーク帯域幅を使用します。

Read next

JS関数内で thisを使ういくつかのケース

この場合、obj.fnなので、出力はWindowオブジェクトのnameプロパティです。 arrow関数のthisは、それが宣言されたスコープのthisをキャプチャします。 特別な注意: 一度キャプチャされたthisは二度と変更されません。また、arrow.fnのthisが変更されることはありません。

Jan 13, 2021 · 2 min read