メインコンテンツまでスキップ

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)

リポジトリとリファレンス​