← Назад в словарь

OAuth (протокол авторизации)

OAuth (протокол авторизации) (OAuth) — открытая авторизация

Контекст термина

Термин используется в контексте авторизации пользователей и доступа к API. Не является системой аутентификации сам по себе и не равен JWT или OpenID Connect.


Суть в одном предложении

OAuth — это протокол авторизации, позволяющий приложениям получать ограниченный доступ к ресурсам пользователя без передачи его пароля.


Краткое определение

OAuth — это стандартный протокол делегированной авторизации, при котором пользователь разрешает стороннему приложению доступ к своим данным через токены.


Где используется

  • Авторизация через Google / GitHub / VK
  • REST API
  • SaaS-интеграции
  • Мобильные приложения
  • Микросервисы
  • Cloud-платформы

Что решает OAuth

Без OAuth:

  • Приложение требует логин и пароль пользователя.
  • Пароль передаётся третьей стороне.
  • Риск утечки максимальный.

С OAuth:

  • Пользователь подтверждает доступ.
  • Приложение получает токен.
  • Пароль не передаётся.

Как работает OAuth (упрощённо)

Участники:

  1. Resource Owner (пользователь)
  2. Client (приложение)
  3. Authorization Server
  4. Resource Server

Поток (Authorization Code Flow)

  1. Пользователь нажимает «Войти через Google»
  2. Переход на сервер авторизации
  3. Пользователь подтверждает доступ
  4. Клиент получает authorization code
  5. Код обменивается на access token
  6. API используется через access token

Пример HTTP-запроса

Получение токена:

POST /token
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&
code=abc123&
client_id=client_id&
client_secret=secret

Ответ:

{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9",
  "token_type": "Bearer",
  "expires_in": 3600,
  "refresh_token": "def456"
}

Основные типы flow в OAuth 2.0

  • Authorization Code
  • Client Credentials
  • Device Code
  • Implicit (устаревший)
  • Password (не рекомендуется)

Access Token vs Refresh Token

Access TokenRefresh Token
Короткий срок жизниДолгий срок
Используется для APIОбновляет access token
Передаётся в заголовкеХранится безопасно

Пример запроса к API:

GET /api/user
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9

OAuth ≠ Authentication

OAuth — это авторизация (разрешение доступа). Для аутентификации используется OpenID Connect поверх OAuth.


Где особенно важно

  • API с внешними клиентами
  • SaaS-сервисы
  • Интеграции
  • Mobile + Web приложения
  • Микросервисы

Частые ошибки

❌ Хранение access token в localStorage без защиты ❌ Передача токена по HTTP ❌ Использование Implicit Flow ❌ Секрет клиента в frontend


Безопасность

  • Использовать HTTPS
  • Применять PKCE для публичных клиентов
  • Ограничивать scope
  • Настраивать expiration

Что не является OAuth

  • JWT (это формат токена)
  • OpenID Connect (надстройка для аутентификации)
  • Session-based login
  • Basic Auth

Архитектурное значение

OAuth позволяет:

  • Делегировать доступ
  • Изолировать пароль пользователя
  • Масштабировать API-доступ
  • Управлять правами через scopes

Это стандарт для современных API.


Аналоги и связанные термины

  • JWT
  • Access Token
  • Refresh Token
  • OpenID Connect
  • Authentication
  • Authorization
  • REST API

Пример использования

«Мобильное приложение авторизуется через OAuth и получает access token для работы с REST API.»


Мини-FAQ

OAuth — это логин через Google? Это механизм, который лежит в основе такого логина.

Можно ли использовать OAuth внутри микросервисов? Да, через client credentials flow.

JWT обязателен в OAuth? Нет, но часто используется как формат токена.


Смотри также

  • Access Token
  • JWT
  • OpenID Connect
  • Authentication
  • REST API