Главная Статьи Что такое OAuth 2.0
Что такое OAuth 2.0
Глоссарий Время чтения 4 минуты

Что такое OAuth 2.0

Екатерина Юдина
Екатерина Юдина
12 Статей

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

История возникновения

История возникновения OAuth тесно связана с именем канадского инженера-программиста Блейна Кука. Разрабатывая совместно с Крисом Мессиной протокол OpenID для сервиса микроблогов Twitter в ноябре 2006 года, он вынужден был искать методы его использования для взаимодействия с Twitter API без необходимости предоставлять пароль. 4 декабря 2007 года была утверждена первая версия OAuth 1.0. Проект развивался, и в 2010 году появился протокол OAuth 2.0, а в октябре 2012 года он был опубликован в качестве релиза RFC 67491. Огромное количество интернет-сервисов, таких как Google, Twitter, Apple и других предполагало множество учетных записей с пользовательскими логинами и паролями. Необходимость упрощения процесса аутентификации стала основной целью проекта.

Роли в OAuth 2.0

Рассмотрим четыре основные роли выполняющие разные функции:

  • владелец (Resource Owner) — как правило, пользователь, предоставляющий доступ к своим данным;
  • клиент (Client) — приложение, запрашивающее от имени пользователя эти данные (мобильное, веб-приложение и другие);
  • сервер ресурсов (Resource Server) — сервер хранения защищенных пользовательских данных;
  • сервер авторизации (Authorization Server) — в его задачи входят аутентификация владельца и выдача токенов доступа.

Благодаря контролируемому и безопасному доступу, обеспечиваемому ролями, приложения имеют возможность работать от имени владельца, не запрашивая данных его аккаунта.

Как работает OAuth 2.0

Постараемся наглядно описать общий принцип работы OAuth 2.0.

  • От приложения-клиента пользователь получает авторизационный запрос для доступа к серверу ресурсов.
  • При получении разрешения, клиент готов к авторизации (authorization grant).
  • Серверу авторизации он сообщает информацию о себе и разрешение от владельца, а затем запрашивает авторизационный токен.
  • После подтверждения подлинности приложения и полученного разрешения, сервер авторизации создает токен доступа.
  • При помощи полученного токена приложение может обращаться к пользовательским данным на сервере ресурсов.

Области действия

Для определения уровня доступа, запрашиваемого приложением у пользователя, и точного указания причин предоставления доступа к данным в OAuth 2.0 используются так называемые области действия (scopes). Каждая из них соответствует определенному набору разрешений и определяет перечень действий, которые клиентское приложение может выполнять от имени пользователя. Допустимые значения областей и относящиеся к ним ресурсы зависят от сервера, с которым взаимодействует клиент.

Примеры областей включают:

  • read — разрешение на чтение данных пользователя (например, доступ к чтению списка контактов);
  • write — разрешение на запись (один из вариантов — запись файлов в облачное хранилище);
  • profile — доступ к профилю пользователя;
  • email — доступ к адресу электронной почты.

Использование областей:

  • запрос клиентом у пользователя авторизации для определенных областей;
  • при положительном ответе, получение разрешения на доступ к указанным областям;
  • выполнение приложением действий, связанных с указанными областями после успешной авторизации.

Области помогают в защите пользователя от злоупотребления в действиях приложений. Например, приложению, запрашивающему только read область, запрещено изменять пользовательские данные.

Необходимо напомнить, что области могут различаться для разных API и веб-сервисов.

Токены и код авторизации в OAuth 2.0

Для предоставления доступа в OAuth 2.0 используются токены, а для обеспечения безопасности процесса авторизации — код авторизации.

Процесс авторизации с использованием кода происходит следующим образом:

  • Приложение-клиент делает запрос авторизации у пользователя.
  • Получив разрешение, сообщает об этом серверу авторизации, предоставляя ему сведения о себе.
  • Сервер выдает авторизационный код клиента.
  • Приложение возвращает его обратно вместе с секретным кодом, что является подтверждением разрешения пользователя на доступ к своим данным (тем самым снижается риск перехвата злоумышленником кода авторизации), а взамен получает от сервера токен доступа.

В протоколе OAuth 2.0 ключи, используемые приложениями для выполнения запросов к серверу ресурсов от имени пользователя, называются токенами доступа. Они служат для авторизации приложения-клиента на доступ к определенным частям данных пользователя.

Примеры токенов:

  • токен авторизации (Authorization Code) служит для обмена на токен доступа;
  • токен доступа (Access Token) предоставляет доступ к ресурсам и имеет короткий жизненный цикл;
  • токен обновления (Refresh Token) долгосрочный токен, используемый для получения нового токена доступа без повторной аутентификации.

Наборы шагов, выполняемых клиентом для получения доступа к ресурсам, называются грантами. Они определяют, каким образом приложение получает токен доступа.

Примеры грантов:

  • авторизационный код (Authorization Code) используется для веб-приложений, запущенных на веб-сервере;
  • имплицитный поток (Implicit Flow) — для клиентских приложений (например, SPA);
  • парольный грант (Password Grant) — не рекомендуется из-за соображений безопасности.

Аспекты конфиденциальности:

  • Для клиентского приложения токен доступа представляет собой непрозрачную строку. Приложение использует ее в HTTP-запросах к серверу ресурсов, но оно не обязано понимать его смысл. Проверка и валидирование токена обеспечивается сервером ресурсов.
  • Как во время передачи, так и в хранилище токены доступа должны оставаться конфиденциальными. Только сервер ресурсов, сервер авторизации и приложение-клиент могут взаимодействовать с токеном.
  • Использовать токен доступа можно только через защищенное HTTPS-соединение. Передача по незашифрованному каналу создает опасность его перехвата.

Отличие OAuth 2.0 от OpenID

Протоколы OAuth 2.0 и OpenID имеют схожие аспекты, что нередко вызывает путаницу у разработчиков. Но выполняют они при этом разные функции.

Рассмотрим их характерные отличия.

Назначение OpenID

Аутентификация — подтверждение личности пользователя. Благодаря OpenID пользователи могут использовать свои имеющиеся аккаунты для входа на другие сайты. При этом нет необходимости создавать новые учетные записи. Верификация на одном сайте происходит с помощью другого.

Назначение OAuth 2.0

Авторизация — разрешение доступа к ресурсам для сторонних приложений без необходимости передачи пароля пользователя. Однако в некоторых случаях (например, Google API12) протокол OAuth 2.0 также может быть использован для аутентификации.

В завершение статьи стоит упомянуть и о расширении OAuth 2.0 — OpenID Connect (OIDC). OpenID Connect представляет собой комбинацию функций OpenID 2.0, OpenID Attribute Exchange 1.0 и OAuth 2.0. Возможности OAuth 2.0 интегрированы непосредственно в сам протокол. Таким образом он сочетает в себе как авторизацию, так и аутентификацию.

Другие публикации по теме
Глоссарий
Расскажем о наиболее распространенных видах баз данных
Глоссарий
IPS (Intrusion Prevention System) и IDS (Intrusion Detection System)
Глоссарий
Безопасное использование большого объема данных на серверах провайдера
Глоссарий
Промежуточный сервер, который выполняет роль безопасного посредника между пользователем и конечным сервером
Глоссарий
Расскажем об уровнях надежности ЦОД
Глоссарий
Система хранения для повышения производительности и отказоустойчивости
Глоссарий
Технология ускорения операций считывания и записи в процессорах, накопителях и других сложных устройствах

События

Реализовали проект по миграции систем планирования компании «Арнест ЮниРусь»
23.06.2026
Новости

Реализовали проект по миграции систем планирования компании «Арнест ЮниРусь»

Кейс одного из крупнейших российских производителей товаров повседневного спроса
Запустили Cloud Security Center
05.06.2026
Новости

Запустили Cloud Security Center

Сервис создан на базе системы управления ИБ SECURITM в рамках технологического партнёрства
Представили новый сервис Cloud VM
04.06.2026
Новости

Представили новый сервис Cloud VM

Продукт разработан на базе российского решения ScanFactory