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) {
  // エラー処理
}

参考

更新履歴

  • 新規作成。