OAuth 2.1 — это не новый протокол, а консолидация лучших практик OAuth 2.0. Он убирает устаревшие и небезопасные flow, делая стандарт чище.
Ключевые изменения
PKCE обязателен для всех клиентов
В OAuth 2.0 PKCE (Proof Key for Code Exchange) был рекомендован только для публичных клиентов. OAuth 2.1 требует его для всех — включая конфиденциальных клиентов с client_secret.
code_verifier → SHA-256 → Base64URL → code_challenge
Удалены небезопасные grant types
| Grant type | OAuth 2.0 | OAuth 2.1 |
|---|---|---|
| Authorization Code + PKCE | ✓ | ✓ |
| Client Credentials | ✓ | ✓ |
| Refresh Token | ✓ | ✓ |
| Implicit | ✓ | ✗ удалён |
| Resource Owner Password | ✓ | ✗ удалён |
Refresh token rotation
При каждом обновлении токена старый refresh token аннулируется и выдаётся новый. Если старый токен использован повторно — вся сессия инвалидируется.
Bearer tokens только через Authorization header
Передача токена через URL (query parameter) запрещена.
Authorization Code Flow
Пользователь → Ваш сайт → Versola (логин/согласие) → Ваш сайт (с кодом)
Ваш сайт → Versola (обмен кода на токен) → Access Token + ID Token