リクエストヘッダーやログファイルからJWTを取得します。それはドットで区切られた長い文字列で、人間の目には何の意味も持ちません。有効期限のクレームを確認したり、発行者を検証したり、埋め込まれたスコープを確認したりする必要があります。そこでjwt.ioを開き、トークンを貼り付けて、右側のペインでデコードされたペイロードを読みます。
このワークフローには問題があります。有効な認証トークンを、あなたが管理していないウェブサイトへネットワーク経由で送信してしまったのです。JWTのペイロードには、ユーザーID、メールアドレス、ロール、権限などが含まれていることがよくあります。トークン自体はまだ有効かもしれません。jwt.ioが信頼できるサイトだとしても、あなたの会社のセキュリティポリシーはそう考えないかもしれません。
JWTが実際に含んでいるもの
JSON Web Tokenはドットで区切られた3つの部分から成ります。ヘッダー(アルゴリズムとタイプ)、ペイロード(有効期限、発行者、サブジェクト、カスタムデータといったクレーム)、そして署名です。ヘッダーとペイロードは単にBase64urlでエンコードされたJSONにすぎません。読むためにサーバーや特別なライブラリは不要で、必要なのはBase64デコーダーとJSONフォーマッターだけです。しかし、毎回これをターミナルで手動で行うのは面倒です。
MacでローカルにJWTをデコード
Bellowsには専用のJWTデコーダーが含まれており、トークンを3つの部分に分割し、デコードされたヘッダーとペイロードを整形されたJSONとして表示します。トークンを貼り付ければ、クレームが表示されます。ネットワークリクエストも、サードパーティのサーバーも、有効なトークンが漏洩するリスクもありません。
クリップボード対応
ブラウザの開発者ツール、ログファイル、Slackのメッセージなどから、JWTをコピーします。Bellowsを開くと、クリップボード上のトークン形式を検出し、すぐにJWTデコーダーを提案します。デコードされたペイロードが1ステップで表示されます。
有効期限を一目で確認
JWTをデコードする最も一般的な理由は、有効期限が切れていないかを確認することです。expクレームはUnixタイムスタンプであり、機械には扱いやすくても人間には無意味です。デコードされたペイロードを見れば、issやsub、audといった他のクレームと並べて、頭の中でタイムスタンプを変換することなく有効期限を素早く読み取れます。
より大きなツールキットの一部
JWTのデコードは、しばしば関連タスクにつながります。クレーム内のBase64値のデコード、フィンガープリントと照合するための文字列のハッシュ化、ペイロードに保存されたリダイレクトURIのURLデコードなどです。同じアプリに41個のツールが揃っているため、こうした後続タスクのために別のユーティリティに切り替える必要はありません。