公開鍵でJWTの署名検証を行う方法を調べた

date
Jun 20, 2022
slug
how-to-verify-jwt-with-public-key
status
Published
summary
公開鍵でJWTの署名検証を行う方法を調べたのでメモ。
type
Post
ステータス
WEB上で、JWTの署名検証を公開鍵で行うというマニアックな実装を行ったのでメモ。
取得したJWTを、サービス側で用意された公開鍵で検証するというユースケースを想定したものです。
 

オンラインで検証する

JWTの検証をオンラインで行うことができるサイト。デバッグにとても便利。
アルゴリズムやペイロードの確認ができる。
 

WEBで検証を実装する

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でできるのすごい。機会があったらやってみたい。
 

© わくてか 2022