it Новости Как работает аутентификация OAuth 2.0 и OpenID Connect
Как работает аутентификация OAuth 2.0 и OpenID Connect

Как работает аутентификация OAuth 2.0 и OpenID Connect

1 659
05 августа 2025 в 08:44

OAuth 2.0 и OpenID Connect — это ключевые технологии для безопасной авторизации и аутентификации в современных веб-приложениях и мобильных сервисах. Разберём их работу просто и понятно.

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


Многие из нас сталкивались с кнопкой "Войти через Google" или "Войти через Facebook". Это и есть пример работы OAuth 2.0 и OpenID Connect. Разница в том, что OAuth 2.0 отвечает за авторизацию, а OpenID Connect — за аутентификацию и получение данных о пользователе.


Разница между авторизацией и аутентификацией

Очень важно разделять эти два понятия:

  • Аутентификация — это процесс подтверждения личности пользователя. Например, проверка, что вы действительно владелец аккаунта Google.
  • Авторизация — это предоставление прав доступа к определённым данным или функциям после успешной аутентификации.


OAuth 2.0 — это про авторизацию. Он даёт сервисам право действовать от имени пользователя. OpenID Connect — расширение OAuth 2.0, которое добавляет аутентификацию и стандартный способ получения информации о пользователе.


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

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


Ключевые участники процесса:

  • Resource Owner — владелец ресурса, то есть пользователь.
  • Client — приложение, которое хочет получить доступ к данным пользователя.
  • Authorization Server — сервер, который выдает токены доступа после проверки пользователя.
  • Resource Server — сервер, на котором хранятся защищенные данные.


Процесс выглядит так:

  1. Пользователь в клиентском приложении выбирает "Войти через Google".
  2. Приложение перенаправляет пользователя на страницу авторизации Google.
  3. Пользователь входит в Google и разрешает доступ к определённым данным.
  4. Google возвращает клиенту authorization code.
  5. Клиент отправляет код на сервер Google и получает access token.
  6. С помощью токена приложение получает доступ к защищённым данным пользователя.


Как работает OpenID Connect

OpenID Connect (OIDC) — это надстройка над OAuth 2.0, которая добавляет стандартный способ получения данных о пользователе. Помимо access token, OIDC возвращает ID token, в котором содержится информация о пользователе: его имя, email, ID и т. д.


ID token — это JWT (JSON Web Token), который можно декодировать и получить всю необходимую информацию. Благодаря этому клиент может сразу узнать, кто вошёл в систему, без дополнительных запросов.


Пример получения токенов

Для примера возьмём упрощённый запрос к серверу авторизации:

POST /token HTTP/1.1
Host: auth.example.com
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code
&code=AUTH_CODE
&redirect_uri=https://yourapp.com/callback
&client_id=YOUR_CLIENT_ID
&client_secret=YOUR_CLIENT_SECRET

Ответ будет содержать токены:

{
	"access_token": "eyJhbGciOiJIUzI1...",
	"expires_in": 3600,
	"id_token": "eyJhbGciOiJSUzI1..."
}

Преимущества OAuth 2.0 и OpenID Connect

  • Безопасность — пароли пользователей не передаются сторонним сервисам.
  • Удобство — пользователи могут входить с помощью уже существующих аккаунтов.
  • Гибкость — можно выдавать ограниченные права доступа.
  • Стандартизация — единый подход, понятный многим разработчикам.


Недостатки и подводные камни

  • Сложность реализации без готовых библиотек.
  • Необходимость защищать токены от утечек.
  • Неправильная конфигурация может привести к уязвимостям.

Больше интересных новостей

Комментарии
Добавить комментарий

Пока комментариев нет