JWTのデコードは署名検証ではない
トークンの内容を読めることと、認証情報を信頼できることを分けて考えます。
内容を読めても発行元は証明できない
署名付きJWTは通常、ピリオドで区切られた3つの部分から成ります。ヘッダーと内容は一般にBase64urlで表され、秘密鍵や共有秘密なしで読めます。架空のトークンに管理者権限を書くことも可能です。受け取るサービスは署名と必要なクレームを検証してから信頼する必要があります。
時刻の単位を確認する
exp、nbf、iatはUnixエポックからの秒数を使います。JavaScriptのDateはミリ秒を受け取るため、通常は1000倍して表示します。表示中のタイムゾーンも確認してください。表示地域を変えても期限切れトークンは有効になりません。時計のずれをどこまで許すかはサーバーの設定です。
信頼できる設定で検証する
許可するアルゴリズムと鍵を限定し、発行者と対象サービスも確認します。未検証のヘッダーだけでアルゴリズムを選んではいけません。リンク先のデコーダーは端末内で解析し、署名を検証していないことを明示します。問い合わせにはサンプルトークンを使い、実際の認証情報を貼らないでください。5部分の暗号化トークンは別の処理が必要です。