使い方
- トークンをJWTに貼り付けます。ドットで区切られた3つの部分があります。
- 署名アルゴリズムを読み、トークンが自分をどう署名したと示しているかを確認します。
- 有効期限を確認します。緑なら、お使いの端末の時刻でトークンはまだ有効です。
- クレームとペイロードを読み、トークンが誰のもので、何が含まれているかを確かめます。
JWTに含まれるもの
JSON Web Tokenは、ドットで区切られた3つの部分からなります。最初の2つはBase64urlで符号化されたJSONのオブジェクトです。ヘッダーは署名の方法を示し、ペイロードはクレームを持ちます。クレームは、誰のためのトークンか、いつ期限切れになるかといった記述です。3つ目の部分が署名です。
RFC 7519は、登録済みのクレーム名を7つ定めています:iss、sub、aud、exp、nbf、iat、jti。表は各クレームを説明し、3つの時刻のクレームは、お使いの言語の日付としても示します。
デコードは検証ではない
このページはトークンをデコードするだけです。署名は確認しません。署名の確認には、トークンの署名に使われた鍵が必要で、検証用の鍵は秘密だからです。デコードされたトークンも偽造できるため、ここで読めたというだけでクレームを信用しないでください。
トークンを検証するには、サーバーやライブラリが、正しい鍵と想定するアルゴリズムで署名を確認し、署名が誤っているトークンを拒否しなければなりません。
期限の読み方
expクレームは、1970年1月1日00:00 UTCからの秒数です。RFC 7519のセクション4.1.4は、その時刻以降のトークンを受け付けてはならないと定めているため、ちょうどその時刻で、すでに期限切れとみなされます。
expクレームのないトークンは期限切れになりません。このページはそれを赤で示します。期限切れにならないトークンは、知っておくべきリスクだからです。
計算例:RFC 7519のサンプルトークン
RFC 7519のセクション3.1の例は、ヘッダーのalgがHS256、ペイロードのissがjoe、expが1300819380、そして独自のクレームを持ちます。expの値は2011年3月22日18:43(UTC)なので、このページはトークンを期限切れと表示します。署名は確認しないため、どの署名でも結果は同じです。
| クレーム | 値 | 意味 |
|---|---|---|
| iss | joe | 発行者:トークンを作成した者 |
| exp | 1300819380(2011年3月22日18:43、UTC) | 有効期限 |
| http://example.com/is_root | true | 独自のクレーム |
よくある質問
トークンはサーバーに送られますか?
いいえ。トークンはお使いのブラウザの中でデコードされ、このページはトークンを保存も送信もしません。ページを読み込んだ後にネットワーク接続を切ってデコードすれば、それを確かめられます。
このページは、トークンが本物かを確認しますか?
いいえ。ヘッダーとクレームを読むだけです。署名の確認には、トークンの署名に使われた鍵が必要ですが、このページはその鍵を求めることはありません。その確認はお使いのアプリケーションが行う必要があります。
アプリが受け付けているのに、ページが期限切れと示すのはなぜですか?
アプリは猶予期間を設けたり、独自の時計で期限を確かめたりしているかもしれません。このページは、expをお使いの端末の時刻と比べるため、端末の時計が誤っていると結果も変わります。
alg noneとは何ですか?
ヘッダーが、トークンには署名がないと示していることです。このようなトークンは誰でも作れるため、重要なことにはサービスが受け付けてはいけません。このページは注意として表示します。
日付に、想定と違う時刻が表示されるのはなぜですか?
日付はお使いの言語と時間帯で表示され、末尾に時間帯の名前が付きます。その前の数値は、トークンに保存された値で、UTCの1970年からの秒数です。
暗号化されたトークンは読めますか?
いいえ。暗号化されたトークンは5つの部分からなり、鍵がなければ中身を読めません。このページが読めるのは、3つの部分からなる署名付きのトークンだけです。
出典
- RFC 7519:JSON Web Token(JWT)(英語)
- RFC 7518:JSON Web Algorithms(JWA)、セクション3.1のalg値(英語)
- RFC 4648:Base64urlの符号化、セクション5(英語)
数値と文章の最終確認日:2026年11月10日火曜日。