Frog Proger 05 ноября 2024

🔐 🔑 OAuth 2: как работает современная авторизация

Помнишь кнопку «Войти через Google»? Та самая кнопка, которая избавляет от необходимости запоминать очередной пароль. Сегодня разберем, как работает эта магия изнутри, почему гиганты вроде Spotify и Medium используют такой способ входа, и как внедрить его в свое приложение. Спойлер: это проще, чем кажется, и гораздо безопаснее традиционной формы регистрации.
🔐 🔑 OAuth 2: как работает современная авторизация
Этот материал взят из нашей еженедельной email-рассылки, посвященной ИИ. Подпишитесь, чтобы быть в числе первых, кто получит дайджест.

Что такое OAuth

OAuth предоставляет веб-приложениям простой* способ авторизовать пользователей через сторонние платформы (например, Google, GitHub или Яндекс), не храня и не обрабатывая пароли.

Но начинающим разработчикам не так-то просто разобраться в основных принципах OAuth 2
Но начинающим разработчикам не так-то просто разобраться в основных принципах OAuth 2

Основные термины OAuth

Основные термины и участники OAuth
Основные термины и участники OAuth

Владелец ресурса (Resource Owner)

Это пользователь, который хочет авторизоваться в приложении. Пользователь, например, имеет аккаунт в Google и является владельцем информации в этом аккаунте.

Клиент (Client)

Клиент – это ваше веб-приложение, которое нужно авторизовать. Это приложение хочет получить доступ к информации учетной записи пользователя, например, имени, чтобы подтвердить личность пользователя, не имея доступа к его паролю. Клиенту вполне подходит, если проверкой и авторизацией пользователя займется Google или GitHub.

Сервер ресурсов (Resource Server)

Сервер ресурсов хранит информацию об учетной записи пользователя. В нашем случае, если мы используем авторизацию через Google, то сервером ресурсов будет сервер Google, где хранится информация о пользователях.

Сервер авторизации (Authorization Server)

Сервер авторизации – это сервер, который проверяет личность пользователя и выдает токен доступа вашему приложению. В нашем примере таким сервером также будет сервер Google.

Этапы OAuth-процесса

Схема процесса OAuth
Схема процесса OAuth

Шаг 1. Регистрация приложения

Чтобы использовать OAuth с вашим веб-приложением, нужно сначала зарегистрировать его у провайдера OAuth (например, Google или Яндекс). Вы заполняете форму на портале разработчиков, указывая следующие данные:

  • Название приложения
  • Адрес сайта
  • URL для возврата (Callback URL, куда будет возвращен пользователь после авторизации)

После регистрации вы получите два важных параметра:

  • Идентификатор клиента (Client ID)
  • Секретный ключ клиента (Client Secret)

Эти данные нужны для подтверждения, что запросы действительно идут от вашего приложения.

Шаг 2. Пользователь заходит на сайт

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

Шаг 3. Пользователь входит и подтверждает доступ

Когда пользователь нажимает на ссылку, его перенаправляют на страницу входа в сервис провайдера. Пользователь вводит свои данные для входа и видит экран подтверждения, где провайдер спрашивает, согласен ли он предоставить доступ к своим данным вашему приложению.

Шаг 4. Получение кода авторизации

После того как пользователь подтверждает доступ, провайдер перенаправляет его обратно на URL (указанный на шаге 1), одновременно передавая код авторизации.

Шаг 5. Обмен кода на токен доступа

Ваше приложение получает код авторизации и отправляет его на сервер авторизации OAuth-провайдера для получения токена доступа. Сервер авторизации проверяет код и, если все в порядке, возвращает токен доступа (иногда еще и токен для продления доступа после истечения срока действия основного токена). Теперь ваше приложение может многократно использовать токен доступа для получения информации о пользователе (до истечения срока действия токена).

OAuth поддерживает разные сценарии авторизации, но описанная выше схема остается самой популярной.

💻 Библиотека программиста
Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека программиста»
***

А какой способ авторизации используешь в своих проектах ты?

МЕРОПРИЯТИЯ

Комментарии

ВАКАНСИИ

Добавить вакансию
Java Team Lead
Москва, по итогам собеседования
Разработчик С#
от 200000 RUB до 400000 RUB

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ