PythonでPyJWTを使用し、JSON Web Token(JWT)を作成してみます。
そもそも、JSON Web Token(JWT)とは何なのか。Webを介して、2者の間で、情報を安全に転送するために使用されるJSONオブジェクトです。認証システムや情報交換に用いられています。転送される情報は、デジタル署名されているため、信頼することができます。Token自体は主にヘッダー、ペイロード、署名で構成されています。これらの3つの部分はドット”.”で区切られています。
また、JSON Web Token(JWT)は、ある者から別の者に送信する情報の構造を定義し、「シリアル化」と「デシリアライズ」の2つの形式が存在する。シリアル化は、主に、リクエストとレスポンスごとにネットワークを通じてデータを転送するために使用される。一方、デシリアライズされたアプローチは、Web Tokenへのデータの読み書きに使用される。
■Python
今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)
■PyJWTをインストールする
今回は、PythonでJSON Web Token(JWT)の実装ができるライブラリ「PyJWT」を使用します。PyJWTはPythonの標準ライブラリではありませんので、事前にインストールが必要なので、インストールしていきます。
PyJWTをインストールするために、今回はpipを経由してインストールを行うので、まずWindowsのコマンドプロンプトを起動します。
pip install PyJWT
起動後、上記のコマンドを入力し、Enterキーを押します。
なお、今回は、pythonランチャーを使用しており、Python Version 3.8.5にインストールを行うために、pipを使う場合にはコマンドでの切り替えを行います。
py -3.8 -m pip install PyJWT
切り替えるために、上記のコマンドを入力し、Enterキーを押します。
Defaulting to user installation because normal site-packages is not writeable Collecting PyJWT Downloading PyJWT-2.1.0-py3-none-any.whl (16 kB) Installing collected packages: PyJWT Successfully installed PyJWT-2.1.0
Enterキーを押すと、インストールが開始され、上記のように「Successfully installed」と表示されます。これが表示されれば、PyJWTが正常にインストールされたことになります。
なお、今回はPyJWTのバージョン2.1.0をインストールしました。
■PyJWTを使用し、JSON Web Token(JWT)を作成する
インストールが完了しましたので、PyJWTを使用し、JSON Web Token(JWT)を作成するスクリプトを書いていきます。
■コード
import jwt payload_data = { "id": "001", "name": "kobayashi", "age": 25, "gender": "boy" } token = jwt.encode( payload=payload_data, key='my_secret' ) print(token)
importでPyJWTモジュールを呼び出します。その後に、payload_dataという変数を作成し、その中に転送する情報をJSONの形式で記述し、格納します。
格納後、tokenという変数を作成し、その中でjwt.encode()関数を使用します。jwt.encode()関数の括弧内の第1の引数,パラメーターには、JSON Web Token(JWT)としてエンコードするためのpayload_dataを渡します。第2の引数,パラメーターには、アルゴリズムに適したキーを渡します。本来であれば、第3の引数,パラメーターで、Tokenを署名するためのアルゴリズムを渡しますが、今回は第3の引数,パラメーターは記述しません。
その後、エンコードされたJSON Web Token(JWT)をprint()関数で出力してみます。
■実行
このスクリプトを「jwt_test.py」という名前で保存し、コマンドプロンプトから実行してみます。
実行にしてみると、転送するための情報がJSON Web Token(JWT)として出力されました。
出力されたJSON Web Token(JWT)を、JSON Web Tokens(https://jwt.io/)で検証(デバック)してみます。
サイトの「Debugger」の項目で「Encoded」にJSON Web Token(JWT)を貼り付けて、「VERIFY SIGNATURE」にキー(鍵)を貼り付けてみると、「Signature Verified(署名の確認)」を表示されます。これで検証(デバック)は完了となります。
コメント