😊

jwt.ioで任意のJWTを生成する方法

2023/10/26に公開

jwt.ioとは

認証サービスを提供しているAuth0が提供しているサイト。
このサイトではJWTのdecode(Base64デコード)ができ、人間が理解できるJSON形式の文字列に表示をしてくれる。


またこのサイトでは任意のJWTの生成も可能であり、この記事では生成方法を説明する。

https://jwt.io/

JWTをjwt.ioで生成できると何が嬉しいのか

任意のClaimsを簡単に指定できるので手軽。
生成したJWTはAPIのaccess_token(JWT)の検証のテストにも使用ができるので便利。

JWTの生成手順

前提:

  • opensslコマンドが使える環境になっていること
    もし入っていない場合は以下をリンクを参照に入れる。

https://pki.world-tls.com/openssl-install-windows-11/

  • 今回は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