🔑
Python:JOSE・JWTライブラリを列挙する.
はじめに
-
2024年10月19日現在,使用可能なJOSE・JWTのpythonライブラリを調べてみました.
-
動機・目的
-
pythonでpem形式の証明書からjwksを生成するプロフラムを実装したく,使えそうなライブラリを探したかった.
-
元々PyJWTを利用しており,他にも同等のライブラリがあるのかどうか気になった.
-
※スター数が少なく人気がなさそうなライブラリは,省いています
PyJWT
- JWTのエンコード・デコード機能が実装されている.URLを引数として,jwk(s)を取り出す
JWKClient
クラスが実装している. - ドキュメント(簡単な例があってみやすい)
- GitHub(スター数:約5100)
JWCrypto
- JWK,JWS,JWE,JWTの仕様を実装している.
- ドキュメント(字が多くてちょっと見にくい.けど,メソッド名や引数,返り値等の記載が盛り込まれており,情報量が多い)
- JWTの署名生成および検証時に使う鍵は,同ライブラリのJWKクラスのインスタンスであり,相互性関連性が強い.
- GitHub(スター数:435)
- OpenWallet Foundationと呼ばれる組織が実装しているsd(Selective Disclosure:選択的開示機能)-jwtには,このライブラリが使用されている.
python-jose
- JOSEの仕様を実装している.
- 最初に挙げたPyJWTがベースになっているっぽい
This library was originally based heavily on the work of the folks over at PyJWT.
- ドキュメント(情報量が少ない)
- JWCryptoと後述のAuthlibには実装されてるthumbprint(jwkのハッシュ値. jwkの
kid
としても設定できる)生成のメソッドがない.
issueでthumbprint実装して欲しい旨の投稿があるものの、未実装.
- GitHub(スター数:約1500)
Authlib
-
JWS, JWK, JWA, JWTの他に,OAuthやOpenID Connect関連のクラス・メソッドが用意されている.
This project is inspired by:
OAuthLib
Flask-OAuthlib
requests-oauthlib
pyjwt
- JWTの署名検証を行う際,検証鍵(公開鍵)はpem形式のデータまたはjsonのjwk(s)を想定している. 同ライブラリのJWKインスタンスを使った署名検証の例は,ドキュメントに記載されてない.
- ドキュメント(見やすい.)
- GitHub(スター数:約4500)
Discussion