Спецификация: RFC 6749
OAuth 2.0 — индустриальный стандарт протокола авторизации. Позволяет приложениям получать ограниченный доступ к учётным записям пользователей на HTTP-сервисах.
Grant Types
- Authorization Code Grant (с обязательным PKCE согласно OAuth 2.1)
- Client Credentials Grant
- Refresh Token Grant
- Device Authorization Grant (RFC 8628) — пока не реализовано
Удалены по дизайну (намеренно не поддерживаются согласно OAuth 2.1):
- Implicit Grant — удалён в OAuth 2.1
- Resource Owner Password Credentials Grant — удалён в OAuth 2.1
PKCE (Proof Key for Code Exchange)
-
code_challengeобязателен для каждого authorization запроса -
code_verifierобязателен для каждого обмена токенами - Поддерживается метод
S256 - Поддерживается метод
plain(не рекомендуется, разрешено спецификацией)
Refresh Tokens
- Ротация refresh-токенов — новый токен выдаётся при каждом использовании
- Старый refresh-токен немедленно инвалидируется
- Полная отмена сессии при повторном использовании токена (обнаружение replay-атак)
Использование Bearer Token
- Access-токены принимаются только через заголовок
Authorization: Bearer - Передача токенов в URL query-параметрах отклоняется
- Короткоживущие access-токены (настраиваемый TTL)
Аутентификация клиента
-
client_secret_basic— заголовокAuthorization: Basic -
client_secret_post— credentials в теле запроса -
private_key_jwt— пока не реализовано -
client_secret_jwt— пока не реализовано
Endpoints
-
POST /authorize— Authorization endpoint -
POST /token— Token endpoint -
POST /revoke— Token Revocation (RFC 7009) -
POST /introspect— Token Introspection (RFC 7662) -
GET /.well-known/oauth-authorization-server— Server Metadata (RFC 8414) — пока не реализовано
Связанные спецификации
- OAuth 2.1 (Draft) — Консолидация best practices
- RFC 7636 — PKCE
- RFC 7009 — Token Revocation
- RFC 7662 — Token Introspection