Шаги по порядку
- 01
Человек подтверждает себя
В приложении провайдера (банк, Госуслуги, учётная запись магазина) человек разрешает своему агенту получать утверждения KYH.
- 02
Провайдер подписывает
Провайдер выдаёт утверждение: уровень, парный псевдоним для этого магазина, отпечаток ключа агента, срок действия. Подписывает своим ключом.
- 03
Агент предъявляет
Агент отправляет запрос магазину с заголовком
KYH-Assertionи подписывает сам запрос своим ключом (HTTP Message Signatures, RFC 9421). - 04
Магазин проверяет
Магазин берёт ключ провайдера из его
/.well-known/kyh-provider, проверяет подпись, получателя, срок, уровень и совпадение ключа агента — и принимает заказ.
Если уровня мало
Магазин отвечает 401 с заголовком KYH-Required: lvl=H3; reason=amount. Агент просит человека подтвердить операцию у провайдера — тот присылает уведомление в приложение. Через минуту агент повторяет запрос с утверждением H3.
HTTP/1.1 401 Unauthorized
KYH-Required: lvl=H3; reason=amount; max_age=600
Content-Type: application/json
{"error":"kyh_level","need":"H3","have":"H2"}
Если агента отключили
Человек отзывает доверие агенту у провайдера. Новые утверждения не выдаются, а уже выданные провайдер помечает отозванными по адресу /kyh/status/{jti}. Магазин проверяет статус при H3 и при крупных суммах.
