WEB上で、JWTの署名検証を公開鍵で行うというマニアックな実装を行ったのでメモ。
取得したJWTを、サービス側で用意された公開鍵で検証するというユースケースを想定したものです。
JWTの検証をオンラインで行うことができるサイト。デバッグにとても便利。
アルゴリズムやペイロードの確認ができる。
WEB上で署名検証を行う場合は jsonwebtoken
を使用する。
yarn add jsonwebtoken
以下の通りimportして、verifyメソッドを叩く。
import * as jwt from 'jsonwebtoken';
...
const verify = () => {
const verifyOptions = {
expiresIn: '24h',
algorithm: ['RS256'], // 署名アルゴリズム
};
const pem = `-----BEGIN PUBLIC KEY-----
${publicKEY}
-----END PUBLIC KEY-----`; // 公開鍵は文字列で用意されている場合、pemのフォーマットに合わせる必要がある。
const legit = jwt.verify(token, pem, verifyOptions);
// 無効な場合、nullが返却される。有効な場合は署名の情報が返却される
}
...
署名についてもjsでできるのすごい。機会があったらやってみたい。