Web APIでのデータ送受信で認証データの受け渡しは大事です。ランダムな文字列のトークンを使うこともできますが、その文字をデータベースに入れておかなければなりません。DB不要でセキュアに使えるトークンとしてJSON Web TOken(JWT)が知られています。 今回紹介するjwt-cliはそんなJSON Web Tokenを作成、検証できるコマンドラインツールです。

jwt-cliの使い方

作成する時にはデータとシークレットを渡します。そうするとJWTが出力されます。

$ jwt sign '{"moongift": "Hello"}' "secret"

copied to clipboard:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJtb29uZ2lmdCI6IkhlbGxvIiwiaWF0IjoxNjA0MzA4OTE3LCJleHAiOjE2MDQzMTI1MTd9.-4Mbb1-bTjFNsgzwcjnTlYZr6bKHj7vb0oWezOhVZas

検証は verifyを使います。validなら問題ありません。

$ jwt verify "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJtb29uZ2lmdCI6IkhlbGxvIiwiaWF0IjoxNjA0MzA4OTE3LCJleHAiOjE2MDQzMTI1MTd9.-4Mbb1-bTjFNsgzwcjnTlYZr6bKHj7vb0oWezOhVZas" "secret"

valid!

少しでも改変すると検証で失敗します。

$ jwt verify "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJtb29uZ2lmdCI6IkhlbGxvMiIsImlhdCI6MTYwNDMwODkxNywiZXhwIjoxNjA0MzEyNTE3fQ.iVnq0NBhsIEz9Nldwp3_iB_-b1o_x7r7V-QmuxAxfF4" "secret"

invalid signature 

jwt-cliを使えばJWTの書名と検証を手軽に試せます。サーバ側のデータを確認したり、テストで作ってみるといった用途に使えるでしょう。JWTはサーバ側で作るのが基本ですが、jwt-cliを使うことでサーバ側での手間がかかる開発を行わずに素早く確認できます。

jwt-cliはJavaScript製のオープンソース・ソフトウェア(MIT License)です。

clarketm/jwt-cli: Command line tool for working with JSON Web Tokens (JWT)