zorin-authority-sdk-php — API
Методы Verifier
Заголовок раздела «Методы Verifier»Verifier::verify(string $assertion, string $brokerPublicKeyPem, array $expected, ?int $now = null): arrayVerifier::verifyWebAuthentication(array $authentication, array $expected, ?int $now = null): arrayПервый возвращает проверенный ZAUTH payload; второй — исходный ZWEB authentication object после проверки. Эти методы не меняют application state.
verify() expected
Заголовок раздела «verify() expected»Все шесть ключей обязательны:
| Ключ | Значение |
|---|---|
aud | Доверенно выбранная аудитория приложения. |
origin | Ожидаемый origin, сравнение строки точное. |
challenge | Challenge сохранённой серверной транзакции. |
action | Разрешаемое действие. |
resource | Конкретный ресурс действия. |
phone_public_key_der_hex | Заранее доверенный SPKI DER телефона в hex. |
SDK сравнивает ключ телефона без учёта регистра hex. Он не загружает public key по URL и не выполняет автоматическую доверенную привязку нового телефона.
ZAUTH scope рассчитывается как zauth: плюс SHA-256 канонической UTF-8 строки из ZAUTH/1|REQUEST|aud, origin, challenge, action, resource и jti с NUL-разделителями. Owner proof должен иметь action = authority.authorize, а resource — этот scope.
Broker signature проверяется над точной строкой ZAUTH/1|<исходный payload segment> с SHA-256. Payload не сериализуется заново перед проверкой подписи. Host/phone fingerprints в proof должны совпасть с payload.
verifyWebAuthentication() expected
Заголовок раздела «verifyWebAuthentication() expected»Обязательны project_id, origin, challenge, phone_public_key_der_hex. Дополнительно:
request_id— если задан, должен совпасть с authentication request ID;require_biometric— default false, требует профиль свежей biometric-аутентификации.
Authentication обязан содержать непустой request ID даже при отсутствии этого optional expected. Для серверной привязки конкретного запроса передавайте expected request_id явно.
ZWEB scope строится из ZWEB/1|REQUEST|project_id, origin, challenge и request ID с NUL-разделителями и префиксом zweb: перед SHA-256. Proof action — web.authenticate.biometric для соответствующего assurance, иначе web.authenticate.
Owner proof
Заголовок раздела «Owner proof»Ожидаются версия ZOWNER/1, action, resource, host/phone fingerprints, phone public key DER hex, nonce, issued/expires Unix timestamps и signature DER hex.
Подписываемая строка начинается с ZTRUST/2|OWNER_PROOF|; action/resource включаются в hex-форме. Проверка использует SHA-256 и зарегистрированный ключ телефона. Proof должен ещё действовать, issued не должен быть более чем на 30 секунд в будущем. В ZAUTH proof не может истечь раньше assertion.
Nonce и jti входят в привязку, но SDK не хранит их историю. За однократное использование отвечает сервер приложения.
Границы проверки
Заголовок раздела «Границы проверки»Не создаются сессии и пользователи, не проверяется членство/роль, не выполняется привилегированная операция и не подтверждается аппаратная аттестация устройства. Криптографически верный proof — вход для вашей политики авторизации, а не её полная замена.