重要:このライブラリはトークンを検証しません。整形式の JWT であればデコードできます。 Express-jwt、koa-jwt、Microsoft.AspNetCore.Authentication.JwtBearer などを使用して、サーバー側ロジックでトークンを検証する必要があります。
ドキュメント - はじめに - フィードバック
NPM または Yarn を使用してインストールします。
npm install jwt-decode
またはyarn add jwt-decode
を実行してライブラリをインストールします。
import { jwtDecode } from "jwt-decode" ;
const token = "eyJ0eXAiO.../// jwt token" ;
const decoded = jwtDecode ( token ) ;
console . log ( decoded ) ;
/* prints:
* {
* foo: "bar",
* exp: 1393286893,
* iat: 1393268893
* }
*/
// decode header by passing in options (useful for when you need `kid` to verify a JWT):
const decodedHeader = jwtDecode ( token , { header : true } ) ;
console . log ( decodedHeader ) ;
/* prints:
* {
* typ: "JWT",
* alg: "HS256"
* }
*/
注:偽りのトークンまたは不正な形式のトークンは、 InvalidTokenError
エラーをスローします。特定のエラーの詳細については、以下を参照してください。
このライブラリはatob()
に依存しています。これは、すべての最新のブラウザーおよびサポートされているすべてのノード環境で使用できるグローバル関数です。
atob()
にアクセスできない環境 (React Native など) でjwt-decode
使用するには、 core-js/stable/atob
使用してアプリケーションで対応するポリフィルを必ず提供してください。
import "core-js/stable/atob" ;
あるいは、 base-64
とポリフィルglobal.atob
自分で使用することもできます。
import { decode } from "base-64" ;
global . atob = decode ;
このライブラリは有効な JSON Web トークンで動作します。これらのトークンの基本形式は次のとおりです。
[part1].[part2].[part3]
すべての部分は、有効な Base64 (URL) エンコードされた JSON である必要があります。 { header: <option> }
オプションに応じて、パート 1 (header: true が指定されている場合のみ) またはパート 2 (デフォルト) をデコードします。
形式に従わないと、次のいずれかのメッセージが表示されるInvalidTokenError
が発生します。
Invalid token specified: must be a string
=> 渡されたトークンは文字列ではありません。このライブラリは文字列に対してのみ機能します。Invalid token specified: missing part #
=> これはおそらく、トークンにドット ( .
) が欠落していることを意味しますInvalid token specified: invalid base64 for part #
=> パーツを Base64 デコードできませんでした (メッセージには、Base64 デコーダーが与えたエラーが含まれている必要があります)Invalid token specified: invalid json for part #
=> パートは正しく Base64 デコードされましたが、デコードされた値は有効な JSON ではありませんでした (メッセージには JSON パーサーが与えたエラーが含まれているはずです) jwtDecode
関数の戻り値の型は、2 番目の引数として渡されたオブジェクトのheader
プロパティによって決まります。省略した場合 (または false に設定した場合)、 JwtPayload
が使用され、 true の場合はJwtHeader
が使用されます。必要に応じて、型引数をjwtDecode
関数に渡すことで、期待される戻り値の型を指定できます。
JwtHeader
とJwtPayload
両方を拡張して、非標準のクレームまたはプロパティを含めることができます。
import { jwtDecode } from "jwt-decode" ;
const token = "eyJhsw5c" ;
const decoded = jwtDecode < JwtPayload > ( token ) ; // Returns with the JwtPayload type
const { jwtDecode } = require ( 'jwt-decode' ) ;
...
ファイルjwt-decode.js
build/esm
フォルダーのルートからプロジェクトのどこかにコピーし、 type="module"
でマークされた script タグ内にそこからjwtDecode
インポートします。
< script type =" module " >
import { jwtDecode } from "/path/to/jwt-decode.js" ;
const token = "eyJhsw5c" ;
const decoded = jwtDecode ( token ) ;
</ script >
このリポジトリへのフィードバックと貢献に感謝いたします。始める前に、以下を参照してください。
フィードバックを提供したり、バグを報告したりするには、問題トラッカーで問題を提起してください。
公開されている GitHub 問題トラッカーでセキュリティの脆弱性を報告しないでください。責任ある開示プログラムには、セキュリティ問題を開示する手順が詳しく記載されています。
Auth0 は、実装が簡単で適応性のある認証および認可プラットフォームです。詳細については、「Why Auth0?」をご覧ください。
このプロジェクトは MIT ライセンスに基づいてライセンスされています。詳細については、LICENSE ファイルを参照してください。