JWTの検証と検証
準備
まず必要なパッケージをプロジェクトに追加します。
yarn add jsonwebtoken
yarn add @types/jsonwebtoken -D
JWTの生成
JWTを生成するためのコードは以下の通りです。
import * as jwt from 'jsonwebtoken';
const jwtPayload = {
email: 'user1@example.com',
name: 'sample user',
};
const jwtSecret = 'secret_key_goes_here';
const jwtOptions: jwt.SignOptions = {
algorithm: 'RS256',
expiresIn: '1h',
};
const token = jwt.sign(jwtPayload, jwtSecret, jwtOptions);
console.log(token);
署名アルゴリズムに共通鍵方式(HS256)を使用する場合は、jwtSecretに文字列で指定します。 公開鍵方式(RS256)を使用する場合は、署名に秘密鍵を指定します。検証には公開鍵を使用します。 expiresInには期限を設定します。出来るだけ短い時間が望ましいです。
RS256の鍵生成
openssl genrsa -out private.pem 2048
openssl rsa -in private.pem -pubout -out public.pem
verifyにコールバック関数を渡すこともできます。 デコードに成功すると以下の結果が得られます。
JWTの検証
JWTを検証するためのコードは以下の通りです。
const jwtSecret = 'secret_key_goes_here';
const jwtOptions: jwt.VerifyOptions = { algorithms: ['RS256'] };
try {
const decoded = jwt.verify(token, jwtSecret, jwtOptions);
console.log(decoded);
} catch (error) {
// エラー処理
}
参考
更新履歴
- 新規作成。