JWTとは?


JWTとは?

JWTは、Json Web Tokenの略であり、クライアント−サーバ、サービス−サービス通信においてAuthorizationが採用するトークンベースの認証方式で使用されるトークンである.

JWT構造

JWTトンはHeaderPayloadSignatureの3つの部分から構成されている.

Header


Headerは、トークンタイプおよび署名を生成するためのアルゴリズムタイプに関する情報を含む.Headerに格納された情報は、JWTに含まれるsignatureとして符号化される.
{
  "typ":"JWT",
  "alg":"HS256"
}

Payload


PayloadにはTokenに関する主な情報が含まれています.Payloadに格納されている情報はbase64と呼ばれています.クレムには3種類ある.

  • Registered Claim Names
    登録クレームは、予め定義されたクレームに相当します.代表的なものはiss(発行者)、sub(subject)、exp(満期時間)などである.

  • Public Claim Names
    これはユーザ定義の主張であり,公開用の情報が含まれている.競合を防止するために、uri形式の鍵が一般的に使用されます.

  • Private Claim Names
    トークンの発行者が任意に指定した情報で、ほとんどの一般情報はプライベートクレームに格納されます.
  • {
      "username":"BlueWhaleKo",
    }
    Payloadが格納する情報は、JWTに含まれるClaimとして符号化される.

    Signature


    これは、base64およびヘッダ宣言ハッシュアルゴリズムを使用して、JWTヘッダおよび負荷に格納された情報を暗号化することに相当する.これにより、ヘッダと負荷に偽の改ざんが発生したか否かを判断することができる.

    JWTプロパティ


    モバイル環境


    移動環境では、Cookie容器を単独で使用する必要があるCookieベースの認証方式と比較して、比較的簡単に適用することができる.

    Self-Contained

    private keyは、クライアントに関する様々な情報をJWTに格納し、base 64に符号化して送信する.payloadトークン自体には、ユーザの情報が含まれており、サーバ管理の負担が軽減されます.

    Stateless

    JWT認証方式の最大の特徴の一つ.
    既存のJWT Webサーバでは、クライアントがサーバにログインすると、サーバはログイン情報をセッションに保存します.セッション情報を格納する方法は様々であるが、通常はセッションを管理する負担をもたらす.
    逆に、サーバがトークンを発行する際に使用するstatefulを使用して、内蔵のprivate keyを検証し、トークンの有効性と偽改ざんを確認する.サーバが発行するトークンはクライアントによって管理され、サーバがセッション情報を維持してユーザー認証を行う負担を軽減します.したがって、サービスは水平に拡張できます.

    References


    [JWT]トークンに基づく認証の説明
    [JWT]JSON Web Tokenの概要と構造
    How To Validate a JWT Token