JWT(JSONウェブトークン)の論理


このポストでは、JWTとJWTのロジックとは何かを学びます.IETFは標準的なトークン形式として設計されています.検証、ユーザ識別、データ完全性、および情報セキュリティのそれぞれの他の複数のポイントなど.
JWTはbase 64形式でエンコードされた3つの別々のJSON部分から成ります.この部分はドット(.)JWTを全体として表します.私が言ったように、3つのフィールドがあります.それらはホセヘッダー、ペイロードと署名です.

ホセヘッダー
JWTヘッダー情報はJSON形式で書かれ、標準フィールドが見つかります.次の例がわかります.
{
    "alg": "HS256",
    "typ": "JWT"
}
ALGは、“データの整合性を保護するために使用する暗号アルゴリズムを指定します.”そして、TYPは「JWTオブジェクトを定義しました」ことを意味します.
ジョゼヘッダーがトークンに同封されるとき、それはBase 64形式でコード化されます.例えば、上記JSON見出しのBase 64対応部分はeyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9である.JWTのURLフレンドリは、Base 64表記法の使用のためです.

ペイロード
JWTトークンはトークン生産者と消費者の間でユニークであるべきです.この一意性はペイロードまたは他のクレーム情報を定義する.ペイロードには、ユーザーID、タイムアウト、およびユーザー権限などのフィールドが含まれます.
{
  "id": "12345",
  "name": "Mert Simsek",
  "scopes": [
      "email",
      "page"
   ]
}
例えば、所属するIDのようなフィールドである必要があります.それのための標準芸術がありますが、それは必須ではありません.

署名
JWTの最後の部分はJWT署名です.シグネチャ部分は、トークン製造者と消費者の間のデータ完全性を保証します.シグネチャを作成する際に、Jose頭で定義されているアルゴリズムを使用します.
JWTをPHPで作成しようとすると、以下のようになります.
$header = base64_encode("HEADER");

$payload = base64_encode("PAYLOAD");

$mixed = $header + "." + $payload;

$secretKey = "My_Secret_Key";

$signature = base64_encode(hash_hmac('sha256', $mixed, $secretKey);

$jwtToken = $mixed + "." + $signature;
上記の操作の結果、我々のJWTトークン出力はそうでしょう.生成されたJWT情報をhttps://jwt.io/で確認できます.
それは、この記事では、今のところそれだけです.JWTの論理を学んだ.