Главная Статьи Что такое 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)
Глоссарий
Безопасное использование большого объема данных на серверах провайдера
Глоссарий
Промежуточный сервер, который выполняет роль безопасного посредника между пользователем и конечным сервером
Глоссарий
Расскажем об уровнях надежности ЦОД
Глоссарий
Система хранения для повышения производительности и отказоустойчивости
Глоссарий
Технология ускорения операций считывания и записи в процессорах, накопителях и других сложных устройствах

События

Объединяем усилия с ITKey для промышленного внедрения
19.05.2026
Новости

Объединяем усилия с ITKey для промышленного внедрения

Ключевое направление — разработка совместного стека решений
Подписали соглашение о долгосрочном сотрудничестве c Cloud.ru
19.05.2026
Новости

Подписали соглашение о долгосрочном сотрудничестве c Cloud.ru

Оно позволит клиентам использовать преимущества мультиоблачного подхода
Как облачные технологии стимулируют внедрение ИИ в бизнес-процессы
13.05.2026
Новости

Как облачные технологии стимулируют внедрение ИИ в бизнес-процессы

Интервью генерального директора Beeline Cloud Андрея Зотова изданию РБК