エンジニアライフスタイルブログを運営しているミウラ(@miumiu06171)です。
普段はフリーランスでシステムエンジニアをしております。
今回は、Pythonのpyjwtライブラリを使ってエンコード(符号化)とデコード(復号化)する方法を紹介していきます。
動作確認には、Visual Studio Code (VS Code) を使用しているため、同様に確認したい方は、こちらの記事でVS CodeのPython開発環境を構築してみてください。
JWTとは
JWTとは、JSON形式のペイロードデータをBase64URLエンコードしたものです。
逆にJWTからJSON形式のペイロードデータにデコードすることもできます。
Pythonのpyjwtの使い方
Pythonのpyjwtを使って「HS256」というアルゴリズムでJSONのペイロードデータをJWTエンコードしたり、デコードする方法を紹介します。
pyjwtインストール(pip install pyjwt)
PythonでJWTを使うためのpyjwtライブラリを以下のpipコマンドでインストールします。
1 |
pip install pyjwt |
pyjwtエンコード(jwt.encode())
pyjwtを使ったJWTエンコードのサンプルコードは、以下の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import jwt payload_data = { "id": "1000", "name": "Sato", "email": "sato@test.com" } key = "my_secret" # エンコード token = jwt.encode( payload=payload_data, key=key, algorithm="HS256" ) print(token) # デコード result = jwt.decode(token, key, algorithms="HS256") print(result) |
JSONのペイロードデータと鍵(key)を準備し、pyjwtのencodeメソッドでJWTトークンを出力できます。
エンコードした結果例は、以下のとおりです。
1 |
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjEwMDAiLCJuYW1lIjoiU2F0byIsImVtYWlsIjoic2F0b0B0ZXN0LmNvbSJ9.ZVWBccW8m10dRoDDL_v3BB5zc74F6M1j43rG-8f5CxM |
pyjwtデコード(jwt.decode())
pyjwtを使ったJWTデコードのサンプルコードは、以下の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import jwt payload_data = { "id": "1000", "name": "Sato", "email": "sato@test.com" } key = "my_secret" # エンコード token = jwt.encode( payload=payload_data, key=key, algorithm="HS256" ) print(token) # デコード result = jwt.decode(token, key, algorithms="HS256") print(result) |
JWTトークンと鍵(key)を準備し、pyjwtのdecodeメソッドでJSONペイロードにデコードすることができます。
デコードした結果例は、以下のとおりです。
1 |
{'id': '1000', 'name': 'Sato', 'email': 'sato@test.com'} |
動作確認
こちらのサイトの「Algorithm」欄に「HS256」、「Encoded」欄に「<JWTトークン>」を入力することで、「Decoded」欄にデコード結果が表示されます。
この方法でも動作確認可能なので、ぜひ活用しましょう。
まとめ
いかがでしたでしょうか。
PythonでJWTを扱うときの参考にして頂ければと思います。
【関連記事】
【Python】pyjwt(RS256)のエンコード・デコード方法(公開鍵と秘密鍵を使用)
【TIPS】Python base64で文字コードのエンコード(符号化)・デコード(復号化)をマスター!