ログイン認証 - JWT トークン - 概要

JWT

略語

  • 完全名: JSON Web トークン (JWT)、( JSON Web トークン - jwt.io )
  • 通信当事者間で情報を JSON データ形式で安全に送信するための、簡潔で包括的な形式を定義します。この情報はデジタル署名が存在するため信頼性があります。

構成

  • ヘッダー: JWT のヘッダーは、通常、トークンのタイプ(つまり、JWT) と使用される署名アルゴリズム(HMAC SHA256 または RSA など) の 2 つの部分で構成されます。ヘッダーはBase64 でエンコードされますが、暗号化されません。例: {"alg":"HS256", "type":"JWT"}

    • Base64 エンコードは、バイナリ データを表す 64 個の印刷可能な文字 (A ~ Z、a ~ z、0 ~ 9、+、/) に基づくエンコード方法です。

  • ペイロード: ペイロードは JWT の 2 番目の部分であり、ユーザーおよびその他のデータに関する情報を記述するクレームが含まれています。JWT のペイロードには、事前定義されたクレーム (iss (発行者)、exp (有効期限) など) およびカスタム クレームを含めることができます。ペイロードも Base64 でエンコードされますが、暗号化されません。

  • 署名 (署名): 署名は JWT の 3 番目の部分であり、JWT の整合性と信頼性を検証するために使用されます。署名は、ヘッダー、ペイロード、およびキーを暗号化することによって生成されます。JWT を受信した後、サーバーは同じキーと署名アルゴリズムを使用して署名を検証し、JWT が改ざんされていないことを確認します。

具体例

「」

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c


「」

この例では、JWT トークンは 3 つの部分で構成され、それぞれがドット (.) で区切られています

1. ヘッダー: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9`。トークンのタイプ (「alg」) と使用される暗号化アルゴリズム (「typ」) が含まれます。

2. ペイロード: `eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ`。これには、ユーザー ID、ユーザー名、トークン発行時刻などのいくつかのクレームが含まれます。

3. 署名: `SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c`。ヘッダー、ペイロード、秘密鍵、暗号化アルゴリズムによって生成され、トークンの信頼性を検証するために使用されます。

JWT トークンは通常、認証と認可に使用され、クライアントとサーバー間の安全なデータ転送を可能にします。

使用するシーン

  • ログイン認証
    • ブラウザからログイン操作を要求するリクエストを送信し、ログインインターフェースにアクセスします。ログインが成功すると、サーバーはJWTトークンを生成(トークン生成)し、生成されたJWTトークンをフロントに返す必要があります。カードが保存され、その後の各リクエストで JWt トークンがサーバーに運ばれ、サーバーが一律にそれを傍受して判断します (トークンの検証)

おすすめ

転載: blog.csdn.net/weixin_64939936/article/details/132503290