Skip to content
EN

Что такое OAuth 2.0

Коротко:

OAuth 2.0 (RFC 6749) — стандарт делегированной авторизации: приложение А получает право действовать от имени пользователя в сервисе Б без передачи пароля. Не путать с аутентификацией — для "войти через Google" используют OpenID Connect поверх OAuth 2.0. Основные flow: Authorization Code (веб), PKCE (mobile/SPA), Client Credentials (сервис-сервис), Device (TV, CLI).

Ниже: подробности, пример, смежные термины, FAQ.

Проверить безопасность сайта →

Подробности

  • Authorization Code: redirect → code → обмен на access_token на сервере
  • PKCE (Proof Key for Code Exchange): для public clients, защита от кражи кода
  • Client Credentials: сервис → сервис, без пользователя, через client_id + client_secret
  • Device Code: для устройств без браузера — пользователь подтверждает на телефоне
  • Scopes: ограничивают что токен может (read:email vs write:all)

Пример

Authorization: Bearer eyJhbGciOi...

Смежные термины

TL;DR: Что такое OAuth 2.0?

OAuth 2.0 — это протокол авторизации, который позволяет сторонним приложениям получать ограниченный доступ к ресурсам пользователя без необходимости передачи пароля. Он работает через несколько типов потоков (flows), таких как Authorization Code, Implicit, Resource Owner Password Credentials и Client Credentials. В отличие от JWT (JSON Web Token), который используется для передачи информации между сторонами, OAuth 2.0 фокусируется на делегировании доступа, что делает его более безопасным для работы с API.

Типы потоков OAuth 2.0

OAuth 2.0 предлагает несколько типов потоков для различных сценариев использования. Основные из них:

  • Authorization Code Flow: Используется для серверных приложений. Пользователь авторизует доступ через браузер, и приложение получает код, который затем обменивается на токен доступа.
  • Implicit Flow: Применяется для клиентских приложений (например, SPA), где токен доступа возвращается напрямую после авторизации.
  • Resource Owner Password Credentials Flow: Позволяет приложению запрашивать токен, используя имя пользователя и пароль пользователя. Этот поток считается менее безопасным и используется только в доверенных приложениях.
  • Client Credentials Flow: Используется для серверных приложений, где приложение само запрашивает доступ к ресурсам без участия пользователя.

Каждый поток имеет свои особенности и предназначен для определенных сценариев. Например, Authorization Code Flow обеспечивает высокий уровень безопасности и подходит для ситуаций, когда требуется длительный доступ к ресурсам.

Пример реализации OAuth 2.0 и отличие от JWT

Для практической демонстрации рассмотрим реализацию Authorization Code Flow с использованием библиотеки oauth2-client на Python. Пример кода:

import requests

# Шаг 1: Перенаправление пользователя на страницу авторизации
authorization_url = 'https://provider.com/oauth/authorize?client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI&response_type=code'

# Шаг 2: Получение кода после авторизации
# Пользователь будет перенаправлен на YOUR_REDIRECT_URI с параметром 'code'

# Шаг 3: Обмен кода на токен доступа
def get_access_token(code):
    token_url = 'https://provider.com/oauth/token'
    data = {
        'grant_type': 'authorization_code',
        'code': code,
        'redirect_uri': 'YOUR_REDIRECT_URI',
        'client_id': 'YOUR_CLIENT_ID',
        'client_secret': 'YOUR_CLIENT_SECRET'
    }
    response = requests.post(token_url, data=data)
    return response.json()

Этот код показывает, как происходит процесс авторизации с использованием OAuth 2.0. Теперь, что касается различий между OAuth 2.0 и JWT. OAuth 2.0 — это протокол авторизации, который управляет доступом к ресурсам, тогда как JWT — это формат токена, который может использоваться для передачи информации между сторонами. JWT может быть использован в качестве токена доступа в OAuth 2.0, но сам по себе не обеспечивает механизм авторизации.

ЗаголовкиCSP, HSTS, X-Frame-Options и др.
SSL/TLSШифрование и сертификат
КонфигурацияСерверные настройки и утечки
Оценка A-FОбщий балл безопасности

Почему нам доверяют

OWASP
рекомендации
15+
заголовков безопасности
<2с
результат
A–F
оценка безопасности

Как это работает

1

Введите URL сайта

2

Анализ заголовков безопасности

3

Получите оценку A–F

Что проверяет анализ безопасности?

Инструмент проверяет HTTP-заголовки безопасности, конфигурацию SSL/TLS, утечки серверной информации и защиту от распространённых атак (XSS, clickjacking, MIMEsniffing). Оценка от A до F показывает общий уровень защиты.

Анализ заголовков

Проверка Content-Security-Policy, HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy и других.

Проверка SSL

Версия TLS, срок сертификата, цепочка доверия, поддержка HSTS.

Обнаружение утечек

Поиск раскрытых серверных версий, debug-режимов, открытых конфигов и директорий.

Отчёт с рекомендациями

Детальный отчёт с объяснением каждой проблемы и конкретными шагами для исправления.

Кому это нужно

Специалисты по безопасности

аудит HTTP-заголовков

DevOps

проверка конфигурации

Разработчики

CSP и HSTS настройка

Аудиторы

соответствие стандартам

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

Нет Content-Security-PolicyCSP — главная защита от XSS. Без него инъекция скриптов значительно проще.
Нет заголовка HSTSБез HSTS возможна downgrade-атака с HTTPS на HTTP. Включите Strict-Transport-Security.
Server header раскрывает версиюServer: Apache/2.4.52 помогает атакующим подобрать эксплойт. Скройте версию.
X-Frame-Options не установленСайт можно встроить в iframe для clickjacking-атаки. Установите DENY или SAMEORIGIN.
Нет X-Content-Type-OptionsБез nosniff браузер может интерпретировать файлы неправильно (MIME sniffing).

Лучшие практики

Начните с базовых заголовковМинимум: HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy. Займёт 5 минут.
Внедрите CSP постепенноНачните с Content-Security-Policy-Report-Only, мониторьте нарушения, затем включите.
Скройте серверные заголовкиУдалите Server, X-Powered-By, X-AspNet-Version из ответов.
Настройте Permissions-PolicyОграничьте доступ к камере, микрофону, геолокации — только то, что реально используется.
Проверяйте после каждого деплояЗаголовки безопасности могут быть перезаписаны при обновлении конфигурации сервера.

Получите больше с бесплатным аккаунтом

История security-проверок и мониторинг HTTP-заголовков безопасности.

Зарегистрироваться (FREE)

Больше по теме

Часто задаваемые вопросы

OAuth 2.0 vs OpenID Connect?

OAuth 2.0 — авторизация (что можно). OpenID Connect — слой поверх для аутентификации (кто пользователь) через id_token (JWT).

Implicit flow ещё используется?

Нет, с 2019 OAuth 2.1 draft и большинство рекомендаций — deprecated. Замена: Authorization Code + PKCE.

Access token — это JWT?

Может быть, но не обязано. OAuth спецификация не требует формата. Многие провайдеры (Google, Auth0) возвращают JWT для удобства клиента.

Запустить инструмент, который описан в этой статье

Бесплатный тариф — 10 мониторов, проверки каждые 5 мин, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.