Auth#

Схемы#

BearerScheme(name="bearer")
BasicScheme(name="basic")
ApiKeyScheme.header("X-API-Key", name="api_key")
ApiKeyScheme.query("api_key", name="api_key")
CookieScheme("session_id", name="cookie")

Учётные данные#

auth = scheme.static(credential)

Композиция#

all_of(USER_AUTH, DEVICE_AUTH)
any_of(all_of(USER_AUTH, DEVICE_AUTH), BASIC)

Параметр security объявления операции принимает схему, SecurityAlternative, SecurityPolicy или None.

Фабрика

Тип учётных данных

Размещение в HTTP

BasicScheme(name)

tuple[str, str]

Authorization: Basic ...

BearerScheme(name)

str

Authorization: Bearer ...

ApiKeyScheme.header(header, name=...)

str

Заголовок запроса

ApiKeyScheme.query(parameter, name=...)

str

Параметр query

CookieScheme(cookie, name=...)

str

Cookie

session_scheme(Model) с Placed

модель сессии

Несколько мест запроса сразу

CookieScheme задаёт ключ, который приносит вызывающий. Сессию, которую сайт ведёт на куках сам, объявляет Cookies(...) на корне; вместе с CookieScheme на одном сервисе она не объявляется.

scheme.static(credential) создаёт привязку авторизации клиента. all_of(...) возвращает одну AND-альтернативу, а any_of(...) создаёт OR-политику. Runtime выбирает только полностью разрешимую альтернативу и не смешивает учётные данные разных вариантов.

Для жизненного цикла сессии используйте session_auth(...). Рукописный SDK может объявить переиспользуемую session_scheme(...) в атрибуте security роутера и вызвать её .configure(...). Контракты описаны в справочнике сессий.