PassFront
  1. PassFront
  2. База знаний
  3. Аутентификация и сессии

Как работает OAuth 2.0 Authorization Code Flow с PKCE?

Аутентификация и сессии

Authorization Code Flow с PKCE — способ войти через сторонний сервис (Google, GitHub) для приложений, которые не могут хранить секрет: SPA и мобильные клиенты.

Шаги

  1. Клиент создаёт случайный code_verifier и считает code_challenge = BASE64URL(SHA256(code_verifier)).
  2. Клиент перенаправляет пользователя к провайдеру: response_type=code, code_challenge, state.
  3. Пользователь входит и разрешает доступ.
  4. Провайдер возвращает на redirect_uri одноразовый code и state.
  5. Клиент проверяет state и отправляет code вместе с исходным code_verifier на токен-эндпоинт.
  6. Провайдер сверяет verifier с ранее присланным challenge и выдаёт токены.

Зачем PKCE

Если злоумышленник перехватит code из URL, он не сможет обменять его на токен: у него нет code_verifier. Раньше SPA использовали Implicit Flow, но он отдавал токен прямо в URL и считается устаревшим.

Роль state

state — случайная строка, которую клиент проверяет при возврате. Она защищает от CSRF в процессе авторизации.

Коротко для собеседования

Клиент получает код, а не токен, и обменивает его вместе с секретным verifier. Так перехваченный код бесполезен.

Другие вопросы раздела