JWT(Json Web Token)


JWT(Json Web Token)とは?

  • 電子署名のURL-SAFE(URLとして使用可能な文字のみ含む)のJson.
  • JWTは、サーバとクライアントの間で情報を交換するときに、Http Request HeaderにJson Tokenを入れ、認証を必要とせずにヘッダに含まれるJWT情報によって認証を行います.
  • JWTは、秘密鍵またはRSAの公開鍵/秘密鍵ペアとしてHMACアルゴリズムを使用して署名することができる.
  • JWS Vs JWE


    JWSとJWEはJWTに関する規格である.
    JWS(Json Web署名)は、「Jsonを用いて電子署名を行い、URLセキュリティ文字列で表す」.
    JWE(Json Web Encryption)は、「Jsonを暗号化しURLセキュリティ文字列として表す」ものです.
  • URL-safeはURLに含められる文字のみを含む.
  • JWT Tokenの構成



    JWTは.3つの部分に分ける.
    ヘッダー、ペイロード、署名を順番に構成します.
    Base 64符号化には「+」、「/」、「=」が含まれるが、JWTはURL−セキュリティのBase 64 url符号化を使用してURIでパラメータとして使用する.
    1.タイトル(ヘッド)

  • トークンタイプとハッシュ暗号化アルゴリズム.

  • 1番目はトークンタイプ(JWT)、2番目はHMAC、SHA 256はRSAなどのハッシュアルゴリズムを表す.
    Header例
    {
    "typ": "JWT",
    "lag": "HS256"
    }
    type: type, 여기에서 토큰 유형이 JWT임을 나타낸다.
    alg: 토큰 서명 생성을 위한 해시 알고리즘인 algorithm을 의미한다. HS256은 HMAC-SHA256으로, 비밀 키를 사용하는 알고리즘
  • 2.ペイロード(Payload)
  • コインのクレーム情報が含まれています.
  • Payloadの情報の一部をクレームと呼び、name/valueのペアで構成されています.
  • トークンは、複数のクレームを含むことができる.
  • クレームの情報には、登録されたクレーム、公開されたクレーム、非公開のクレームの3種類があります.
    ex)Payload例
    {
    "userId": "abcd1111",
    "username": "test1111",
    "email": "[email protected]",
    "iss": "testissu",
    "iat": 1515232545,
    "exp": 1517889808
    }
  • 必要な値は、userId、username、およびemailに保存できます.
    標準溶接(オプション)
  • iss: Issuer. JWT発行者/発行者
  • iat: Issued at. JWT発行時間
  • exp: Expiration Time. JWT有効期限
  • 3.署名

  • secret keyを含む暗号化されています.
    ex)署名例
    const data = Base64UrlEncode(header) + '.' + Base64UrlEncode(payload);
    const hashedData = Hash(data, secret);
    const signature = Base64UrlEncode(hashedData);

  • まずHederとPayloadを符号化し,次に点(.)けつごう

  • ハッシュ・アルゴリズム(Headerで定義)を使用して、ハッシュ・データを作成します.

  • ハッシュ結果を符号化し、信号を得る.
  • アカウント検証


  • ユーザは、ログイン情報をサーバに送信する.
  • サーバは、ユーザから取得したデータを用いてJWTTokenを生成する.
  • サーバによって生成されたJWT Tokenがユーザに送信され、ユーザ側はJWT Tokenを保存する.(通常はタイトル内)
  • ユーザは、認証要求および保存が必要なJWT Tokenをサーバに送信する.
  • サーバは、ユーザが受信したJWT Tokenを検証し、応答を送信する.