月間29,000PV達成! 収益は毎日発生中! ギランバレー症候群に関する情報を集めています

JWTって何?仕様や特徴・構成を超簡単に解説!

JWTって何?仕様や特徴・構成を超簡単に解説!
Advertisement

 

JWTって何や?

JWTとはざっくり言うとトークンのことですが、僕はAWS Cognitoの勉強をしている時に出くわしました。

今回はそんなJWTについて見ていきましょう!

 

 

JWTとは

JWTは、「Json Web Token」の略です。

セキュアなトークンを発行するための標準仕様になります。

 

 

JWTの発音

どうやら「ジョット」と呼ぶらしいです。

 

 

JWTの特徴

JWTの特徴は以下になります。

・標準の仕様である

・仕様がシンプルである

・暗号化されていない

・署名アルゴリズムが選択可能である

・URL-safeである

 

 

JWTの使われ方

JWTはトークンなので、発行者からトークンが発行され、クライアント側はそのトークンを使用し認証を行います。

流れは以下のようになります。

1.認証サーバに認証情報を渡し、トークンを請求する。

2.認証サーバは秘密鍵を使って署名したトークンを発行する。

3.クライアントは発行されたトークンを使用し、サーバとのやり取りをする。

4.認証サーバは秘密鍵を使用してトークンを検証する。

発行されたトークンを書き換えることで、別のユーザとして認証を成功させることができます。
これが、JWTにセキュリティの脆弱性があると言われる所以です。

 

 

Advertisement

 

JWTの構成

説明だけでは分かりにくいので、実際のJWTを見てみましょう。

 

上記が実際のJWTです。

 

JWTを見やすく改行してみました。「.」で3つに区切られており、それぞれに意味があります。

1.ヘッダ

2.ペイロード

3.署名

 

1.ヘッダ

ヘッダは、署名を行うために必要な情報を保持しています

JSONデータをBase64でエンコードしたものになります。

 

2.ペイロード

ペイロードは、やりとりに必要な属性情報を保持しています

ヘッダ同様、JSONデータをBase64でエンコードしたものになります。

 

3.署名

署名は、署名アルゴリズムで署名されたものです。

こちらもJSONデータをBase64でエンコードしたものになります。

 

 

 

AWS Cognito

AWS Cognitoと呼ばれる、AWSのユーザ認証機能でもJWTが使用されています。

Cognitoでは、「ID Token」「Access Token」「Refresh Token」の3つのトークンが発行されます。

■ユーザープールのトークンの使用

URL:「https://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html」

 

 

JWTを気軽に見るためのツール

以下のツールを使用すると、JWTを気軽にデコードできます。

■JSON Web Tokens

URL:「https://jwt.io/」

 

 

まとめ

今回はJWTについてまとめてみました。

個人的には、JWTが気軽にデコードできるというのに驚きました。

セキュリティ的にはあまりよろしくないのかなと感じましたが、やはりJSONを使うというのが最近の流れなんでしょうか?

ではまた!

Travelerを知らないの?