Код — конкретное основание для выдачи токена. Общее понятие основания не делает все способы выдачи одинаково допустимыми по RFC 9700.
Выдача по коду авторизации
Определение
Выдача по коду авторизации — способ выдачи токенов в OAuth, при котором клиент сначала получает через браузер короткий одноразовый код, а затем обменивает его на токен доступа.
Также ищут: Authorization code grant · authorization code flow · поток кода авторизации
Зачем это знать
Короткий одноразовый код отделяет возврат через браузер от выдачи токена. При проверке нужно сохранить связь с клиентом, адресом возврата и значением PKCE.
Карта понятия
Что подтверждено
Код авторизации сначала возвращается клиенту через браузер, а затем обменивается на токен доступа у сервера авторизации.
Граница применимости: Выдача по коду авторизации в OAuth 2.0.
RFC 9700 требует применять PKCE при выдаче по коду для публичных клиентов и рекомендует его конфиденциальным клиентам. Сервер авторизации проверяет исходное значение PKCE при защищённом им обмене кода.
Граница применимости: Раздел 2.1.1 RFC 9700, январь 2025 года. Нормативные уровни для публичного и конфиденциального клиента различаются; рекомендация не выдаётся за одинаковое требование ко всем.
Код авторизации должен иметь короткий срок действия и не использоваться более одного раза. Сервер авторизации отклоняет повторное использование; сам код предназначен для обмена на токен, а не для вызова API.
Граница применимости: Выдача и повтор кода по RFC 6749, разделы 4.1.2 и 4.1.3. Универсальный числовой срок жизни кода не назначается.
Код авторизации связан с идентификатором клиента и адресом возврата. При обмене сервер проверяет эту связь; если Redirect URI был передан в исходном запросе, значение при обмене должно быть тем же.
Граница применимости: Проверки точки выдачи токена по RFC 6749, раздел 4.1.3. Аутентификация конфиденциального клиента остаётся отдельным обязательством.
PKCE связывает обмен кода с исходным проверочным значением. Конфиденциальный клиент при этом продолжает подтверждать свою подлинность применимым способом; знание проверочного значения не заменяет все остальные проверки клиента и запроса.
Граница применимости: Редакторское сопоставление PKCE и аутентификации клиента в точке обмена кода; конкретный метод аутентификации задаёт профиль.
Не путать
Код передаётся клиенту для обмена, PKCE связывает этот обмен с исходным проверочным значением. Одноразовость кода и его привязка решают разные проверки.
Что проверить
- Разделите возврат кода и запрос токена.
- Укажите короткий срок действия кода.
- Проверьте запрет повторного использования.
- Свяжите код с клиентом и адресом возврата.
- Проверьте PKCE для выбранного типа клиента.
- Сохраните отдельную аутентификацию конфиденциального клиента.
- Не отправляйте код авторизации прикладному API.
Первоисточники
- The OAuth 2.0 Authorization Framework
Определяет роли OAuth, authorization grants, access и refresh tokens, client types и основные grant flows.
- Best Current Practice for OAuth 2.0 Security
Актуализирует OAuth security: exact redirect matching, PKCE, sender-constrained tokens и безопасный refresh-token lifecycle.
Утверждения: 02
- Proof Key for Code Exchange by OAuth Public Clients
Определяет code verifier и derived code challenge для привязки authorization code к начавшему flow client instance.
Утверждения: 05