zorin-authority-sdk-python — API
This content is not available in your language yet.
parse_assertion(assertion: str) -> dict
Заголовок раздела «parse_assertion(assertion: str) -> dict»Проверяет число сегментов и префикс z1, декодирует payload из base64url и JSON. Не подтверждает подпись, срок или origin. Результат остаётся недоверенным.
verify_assertion()
Заголовок раздела «verify_assertion()»Позиционные параметры: assertion и broker_public_key_pem (bytes либо str). Остальные — keyword-only:
| Параметр | Значение |
|---|---|
aud | Ожидаемая аудитория. |
origin | Ожидаемая точная строка origin. |
challenge | Сохранённый сервером challenge. |
action, resource | Подтверждаемое действие и ресурс. |
phone_public_key_der_hex | Заранее доверенный ключ телефона в DER hex. |
now=None | Unix seconds; по умолчанию int(time.time()). |
Проверяются ZAUTH version, exp > now, iat <= now + 30, ожидаемые поля, ECDSA/SHA-256 подпись broker над исходным payload segment, identity и срок owner proof, его подпись и transaction scope.
Owner proof action обязан быть authority.authorize. Его resource вычисляется из aud/origin/challenge/action/resource/jti, а expires должен покрывать exp assertion.
Криптографические данные
Заголовок раздела «Криптографические данные»Ключ broker — PEM public key; ключ телефона — SPKI DER в hex. Подписи представлены DER, проверяются через cryptography ECDSA/SHA-256. Scope-хеш — SHA-256 от UTF-8 строки с NUL-разделителями; owner proof подписывает строку ZTRUST/2|OWNER_PROOF с action/resource в hex.
Совпадение fingerprints связывает части proof между собой. Доверие к телефону задаётся expected ключом из вашей базы, не самим фактом наличия fingerprint в payload.
Что хранит приложение
Заголовок раздела «Что хранит приложение»SDK не хранит использованные challenge, nonce или jti, не знает текущую сессию и права аккаунта. Срок проверки не исключает повтор до истечения: однократность обеспечивается серверным хранилищем с атомарным потреблением транзакции.