😊
jwt.ioで任意のJWTを生成する方法
jwt.ioとは
認証サービスを提供しているAuth0が提供しているサイト。
このサイトではJWTのdecode(Base64デコード)ができ、人間が理解できるJSON形式の文字列に表示をしてくれる。
またこのサイトでは任意のJWTの生成も可能であり、この記事では生成方法を説明する。
JWTをjwt.ioで生成できると何が嬉しいのか
任意のClaimsを簡単に指定できるので手軽。
生成したJWTはAPIのaccess_token(JWT)の検証のテストにも使用ができるので便利。
JWTの生成手順
前提:
- opensslコマンドが使える環境になっていること
もし入っていない場合は以下をリンクを参照に入れる。
- 今回はRS256を使用する手順を説明する。
1.AlgorithmでRS256を選択する
2.任意のPayloadを追加する
- 例:audを追加したPayloadにする
{
"sub":"1234567890",
"aud":[
"http://localhost:3001"
],
"name":"John Doe",
"admin":true,
"iat":1516239022
}
※ Invalid Signatureと赤色のメッセージが表示されるが、今は署名を行っていないので赤い状態でOK。
※ユースケースに応じて必要があればHEADERにkidを追加するのも行ってもOK。
3.公開鍵と秘密鍵を生成する
- 公開鍵と秘密鍵を生成する。
ssh-keygen -t rsa -b 2048 -m PEM -f my_rsa.key
# パスフレーズは入力しないでEnterでOK
-
公開鍵と秘密鍵が作成されたことを確認
my_rsa.key
が秘密鍵
my_rsa.key.pub
が公開鍵 -
jwt.ioで使用する公開鍵はPEM形式である必要があるため、秘密鍵からPEMの形式で公開鍵を出力する。
openssl rsa -in my_rsa.key -pubout -outform PEM -out my_rsa.pub
- 秘密鍵の中身をコマンドラインに出力しておく
$cat my_rsa.key
-----BEGIN RSA PRIVATE KEY-----
省略
-----END RSA PRIVATE KEY-----
- PEM形式の公開鍵が生成されたことを確認する
my_rsa.pub
が公開鍵(PEM形式)
catコマンドでファイルを読むと以下の形式になっている。
$ cat 公開鍵のファイル名
-----BEGIN PUBLIC KEY-----
省略
-----END PUBLIC KEY-----
4.jwt.ioで公開鍵と秘密鍵を入力する
- 画像の
1
に公開鍵、2
に秘密鍵を入力する
※ `BEGIN ENDの行も含める
-
Signature Verified
と表示がされたら、想定通りJWTの生成が完了した。
Discussion