JWT認証とは? Session認証との違いを簡単なイメージでまとめてみた
JWT認証とは
トークンによる認証方式のひとつ。
名称のとおり、JWT(JSON Web Token)形式のトークンを用います。
ちなみに、JWTは「ジョット」と読みます。
JWTの構造
ヘッダー、ペイロード、署名の3つの要素で構成される。
下図のような構造になっている。
ヘッダー
通常、2つの要素で構成される。
{
"alg" : "HS256",
"typ" : "JWT"
}
alg
:使用する署名アルゴリズム(HMAC SHA256やRSAなど)を指定する。
typ
:トークンの形式を指定する。
上記のJSONをBase64UrlエンコードしたものがJWTの最初の要素です。
ペイロード
認証情報などのクレームを格納します。
(トークン内で保持する任意の情報ををクレームと呼びます。)
{
"id" : "1234567890",
"name" : "John Doe",
"exp" : "2020/05/18"
}
標準で登録済みのクレームがありますが、独自のクレームを使うこともできます。
上記のJSONをBase64URLエンコードしたものがJWTの2番目の要素です。
署名
トークンが途中で改ざんされていないことを確認するためのものです。
署名を生成するには、
- エンコードされたヘッダー
- エンコードされたペイロード
- 秘密鍵
をヘッダーのalg
で指定したアルゴリズムでハッシュ化します。
例えば、HMAC SHA256アルゴリズムを使用する場合、以下のように署名が生成されます。
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)
以上のようにして生成した署名が、JWTの3番目の要素です。
JWTの注意点
署名付きトークンの場合、この情報は改ざんから保護されていますが、誰でも読み取ることができることに注意してください。暗号化されていない限り、JWTのペイロードまたはヘッダー要素に秘密情報を入れないでください。
Cookie(Session)による認証とJWT認証の違い
JWT認証とCookie(Session)による認証の違いを簡単なイメージにまとめてみました。
Cookie(Session)による認証
セッションの状態(認証情報など)はサーバー側で保持されている。(ステートフル)
Cookieで保存されたセッションIDをリクエストとともに送信することでセッションの状態を取得できる。
JWT認証
サーバーは認証情報などの状態を保持しない。(ステートレス)
サーバー側に保管されている秘密鍵がないと改ざんはできない。
備考
より詳細については、随時追記していきたいと思います。
Author And Source
この問題について(JWT認証とは? Session認証との違いを簡単なイメージでまとめてみた), 我々は、より多くの情報をここで見つけました https://qiita.com/gucciT/items/affb20b0ef89947ebae3著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .