Уровень 1. Кто просит доступ и кто его выдаёт
OAuth — не экран входа, а протокол делегирования доступа с четырьмя ролями. Сначала определите, какие стороны исполняют роли клиента, сервера авторизации, ресурсного сервера и владельца ресурса.
Клиент OAuth просит ограниченный доступ, сервер авторизации выдаёт токен, а ресурсный сервер защищает API. Роли клиента и владельца ресурса различаются, но одна сторона может исполнять обе.
Основание для авторизации позволяет выпустить токен. При выдаче по коду браузер возвращает короткий код авторизации, который клиент отдельно обменивает на сервере авторизации.
Redirect URI сверяют точно, а PKCE связывает код авторизации с проверочным значением конкретного экземпляра клиента. PKCE не подтверждает личность пользователя и не исправляет открытое перенаправление.
Публичный клиент не способен надёжно хранить общий секрет; конфиденциальный клиент может подтвердить свою подлинность. Выдача по учётным данным клиента представляет службу, а не конечного пользователя.
Уровень 2. Какие токены хранит клиент
Токен доступа и токен обновления предназначены разным получателям. Затем выберите токен на предъявителя или привязку к отправителю и задайте реальный срок действия.
Токен доступа предъявляют ресурсному серверу, а токен обновления — только серверу авторизации для получения нового токена доступа. Ни один из них не равен исходному основанию для выдачи доступа.
Токен на предъявителя может использовать любой, кто им завладел. Поэтому его защищают как секрет и не помещают в URL или журналы.
Токен с подтверждением владения требует связанный ключ. DPoP добавляет подписанное подтверждение к HTTP-запросу, а OAuth mTLS связывает токен с сертификатом клиента.
Токен обновления публичного клиента защищают ротацией или привязкой к отправителю. Ни короткий срок действия, ни mTLS не исправляют чрезмерные полномочия.
Уровень 3. Что разрешено и кому предназначен токен
Область полномочий отвечает за разрешённые действия, а ресурс и получатель — за целевой API. Формат токена и его назначение проверяют отдельно.
Параметр scope описывает запрошенные действия, указатель ресурса выбирает целевой API, а поле audience позволяет ресурсному серверу отвергнуть токен для другого получателя.
Непрозрачный токен не разбирают на стороне клиента; ресурсный сервер может узнать его текущее состояние через защищённую точку интроспекции.
Отзыв досрочно прекращает действие токена или связанного разрешения, но охват отзыва и скорость его применения зависят от правил сервера и кэшей.
JWT — формат утверждений. OpenID Connect добавляет вход пользователя поверх OAuth, а ID Token предназначен клиенту; API нужен токен доступа с подходящим профилем.
Уровень 4. Защитить API и сохранить след проверки
Предъявление учётных данных только начинает проверку. API отдельно применяет правила доступа, ограничения нагрузки и безопасный аудит.
Ключ API часто идентифицирует вызывающее приложение и действует как секрет, но не заменяет личность пользователя или проверку доступа к конкретному объекту.
Ограничение частоты сдерживает число запросов за короткий интервал и защищает вычислительные ресурсы. Оно не выдаёт полномочий и отличается от долгосрочной квоты.
Ресурсный сервер проверяет все условия применения токена и сохраняет результаты разрешённых и отклонённых запросов, а не только итоговый код HTTP.
Аудит связывает клиента, субъект, конечную точку, принятое решение, результат и идентификатор запроса, но не копирует сам токен на предъявителя или ключ API.
Проверьте инженерное мышление
Вопросы проверяют не память на аббревиатуры, а умение не делать лишних выводов.
Источники курса
Ссылки приведены один раз для всего курса, чтобы не мешать чтению каждого тезиса.
- Первичная спецификация
The OAuth 2.0 Authorization Framework
Internet Engineering Task Force · RFC 6749, October 2012
Определяет роли OAuth, authorization grants, access и refresh tokens, client types и основные grant flows.
Открыть первоисточник - Первичная спецификация
Best Current Practice for OAuth 2.0 Security
Internet Engineering Task Force · RFC 9700, January 2025
Актуализирует OAuth security: exact redirect matching, PKCE, sender-constrained tokens и безопасный refresh-token lifecycle.
Открыть первоисточник - Первичная спецификация
Proof Key for Code Exchange by OAuth Public Clients
Internet Engineering Task Force · RFC 7636, September 2015
Определяет code verifier и derived code challenge для привязки authorization code к начавшему flow client instance.
Открыть первоисточник - Первичная спецификация
OpenID Connect Core 1.0 incorporating errata set 2
OpenID Foundation · OpenID Connect Core 1.0, Final
Определяет identity layer поверх OAuth 2.0, openid scope, ID Token и правила его validation.
Открыть первоисточник - Первичная спецификация
The OAuth 2.0 Authorization Framework: Bearer Token Usage
Internet Engineering Task Force · RFC 6750, October 2012
Определяет bearer-token presentation, защиту от disclosure, Authorization header и ошибки invalid_token/insufficient_scope.
Открыть первоисточник - Первичная спецификация
OAuth 2.0 Demonstrating Proof of Possession
Internet Engineering Task Force · RFC 9449, September 2023
Определяет application-layer proof-of-possession и sender-constrained tokens с защитой от replay.
Открыть первоисточник - Первичная спецификация
OAuth 2.0 Mutual-TLS Client Authentication and Certificate-Bound Access Tokens
Internet Engineering Task Force · RFC 8705, February 2020
Определяет OAuth client authentication через mutual TLS и certificate-bound access/refresh tokens.
Открыть первоисточник - Первичная спецификация
JSON Web Token Profile for OAuth 2.0 Access Tokens
Internet Engineering Task Force · RFC 9068, October 2021
Профилирует JWT access token: at+jwt type, required iss/exp/aud и resource-server validation, отличая его от ID Token.
Открыть первоисточник - Первичная спецификация
Resource Indicators for OAuth 2.0
Internet Engineering Task Force · RFC 8707, February 2020
Вводит resource parameter для target API и audience-restricted access tokens: scope отвечает что, resource — где.
Открыть первоисточник - Первичная спецификация
OAuth 2.0 Token Introspection
Internet Engineering Task Force · RFC 7662, October 2015
Определяет защищённый запрос текущего active state и metadata OAuth token; описывает trade-off caching и liveness.
Открыть первоисточник - Первичная спецификация
OAuth 2.0 Token Revocation
Internet Engineering Task Force · RFC 7009, August 2013
Определяет HTTPS revocation endpoint, обязательную поддержку revocation refresh token и возможную cascade policy.
Открыть первоисточник - Первичная спецификация
JSON Web Token
Internet Engineering Task Force · RFC 7519, May 2015
Определяет compact JWT format и registered claims issuer, subject, audience, expiration, not-before, issued-at и JWT ID.
Открыть первоисточник - Первичная спецификация
OpenAPI Specification v3.1.1
OpenAPI Initiative · OpenAPI Specification 3.1.1, 24 October 2024
Определяет API security schemes, включая apiKey в header/cookie/query, mutualTLS, OAuth 2.0 и OpenID Connect.
Открыть первоисточник - Первичная спецификация
Guidelines for API Protection for Cloud-Native Systems
National Institute of Standards and Technology · NIST SP 800-228-upd1, includes updates as of 13 March 2026
Задаёт API lifecycle controls для authentication, authorization, rate limits, resource limits, logging и monitoring.
Открыть первоисточник - Первичная спецификация
Security and Privacy Controls for Information Systems and Organizations
National Institute of Standards and Technology · NIST SP 800-53 Rev. 5, Release 5.2.0
Содержит controls для authorization, least privilege, separation of duties, privileged functions и protection of audit information.
Открыть первоисточник - Официальная документация
Best practices for managing API keys
Google Cloud · Google Cloud documentation, checked 30 August 2026
Рекомендует ограничивать keys, хранить вне code и query parameters, регулярно rotate и удалять ненужные keys.
Открыть первоисточник