OAuth 2.0 (RFC 6749) — стандарт авторизации: приложение получает ограниченный доступ к вашим данным на другом сервисе без вашего пароля. Классический пример: «Войти через Google» — GitHub не видит ваш google-пароль, но получает access-token с scope'ами (например, `read:email`, `write:repo`).
OAuth сам по себе не отвечает на вопрос «кто пользователь» — только «этому приложению разрешено делать X». Для аутентификации поверх него стандартизировали OpenID Connect (OIDC) — расширение OAuth2, добавляющее `id_token` (JWT с claims: sub, email, name, picture). Google, Microsoft, Apple, Auth0, Okta, Keycloak — все реализуют OIDC.
Flow: Authorization Code + PKCE — современный дефолт для веб- и мобильных приложений. (1) Приложение редиректит пользователя на IdP (Google) со scope'ами. (2) Пользователь логинится, соглашается. (3) IdP возвращает `authorization_code` в редирект. (4) Приложение обменивает код + PKCE-verifier на `access_token` и `id_token` через backend-канал. (5) Валидируется JWT-подпись id_token — теперь знаете, кто пользователь.
Опасно: (1) implicit flow (устарел) — токен в URL fragment, попадает в логи браузера. (2) не проверять `iss` / `aud` / `exp` в id_token — принять фальшивый токен. (3) redirect_uri без wildcarcd whitelist — атака redirect. (4) не PKCE в SPA/mobile — украденный код используется атакующим.