ZTXBAS Python SDK
軽量な Python クライアントです。ES256 の検証に cryptography を使用し、それ以外のランタイム依存はありません。
インストール
Python 3.9 以降が必要です。
pip install ztxbas
インポート
必要なクラスと例外をインポートします。
from ztxbas import Client, ChallengeDeniedError, ChallengeExpiredError
最小構成のエンドツーエンド例
ユーザー登録、オリジン登録、チャレンジ作成、ポーリングから JWT claims の取得までを実行します。
c = Client(
"https://ztxbas.example.com",
"app_YOUR_APPLICATION_ID",
"YOUR_HMAC_SECRET_HEX",
)
c.register_user("alice@example.com")
c.register_origin("https://app.example.com", "Example App")
ch = c.create_challenge("alice@example.com", "https://app.example.com")
claims = c.poll_challenge(ch["challenge_id"])
print(claims.email, claims.origin)
例外処理
ChallengeDeniedError、ChallengeExpiredError、UnregisteredOriginError を例外として捕捉できます。生の応答形式を確認する場合は ApiError の status_code、code、message を参照します。
from ztxbas import (
ChallengeDeniedError,
ChallengeExpiredError,
UnregisteredOriginError,
)
try:
claims = c.poll_challenge(ch["challenge_id"])
except ChallengeDeniedError:
... # user tapped Deny
except ChallengeExpiredError:
... # approval too slow
except UnregisteredOriginError:
... # programmer error
JWT 検証のみのモード
検証だけであれば Verifier を使います。Verifier はスレッドセーフであり、複数のワーカースレッドや非同期処理から共有できます。
from ztxbas import Verifier
v = Verifier(
"https://ztxbas.example.com/.well-known/jwks.json",
expected_issuer="https://ztxbas.example.com",
)
claims = v.verify(jwt_from_mobile)