Что такое OAuth
OAuth предоставляет веб-приложениям простой* способ авторизовать пользователей через сторонние платформы (например, Google, GitHub или Яндекс), не храня и не обрабатывая пароли.
Основные термины OAuth
Владелец ресурса (Resource Owner)
Это пользователь, который хочет авторизоваться в приложении. Пользователь, например, имеет аккаунт в Google и является владельцем информации в этом аккаунте.
Клиент (Client)
Клиент – это ваше веб-приложение, которое нужно авторизовать. Это приложение хочет получить доступ к информации учетной записи пользователя, например, имени, чтобы подтвердить личность пользователя, не имея доступа к его паролю. Клиенту вполне подходит, если проверкой и авторизацией пользователя займется Google или GitHub.
Сервер ресурсов (Resource Server)
Сервер ресурсов хранит информацию об учетной записи пользователя. В нашем случае, если мы используем авторизацию через Google, то сервером ресурсов будет сервер Google, где хранится информация о пользователях.
Сервер авторизации (Authorization Server)
Сервер авторизации – это сервер, который проверяет личность пользователя и выдает токен доступа вашему приложению. В нашем примере таким сервером также будет сервер Google.
Этапы OAuth-процесса
Шаг 1. Регистрация приложения
Чтобы использовать OAuth с вашим веб-приложением, нужно сначала зарегистрировать его у провайдера OAuth (например, Google или Яндекс). Вы заполняете форму на портале разработчиков, указывая следующие данные:
- Название приложения
- Адрес сайта
- URL для возврата (Callback URL, куда будет возвращен пользователь после авторизации)
После регистрации вы получите два важных параметра:
- Идентификатор клиента (Client ID)
- Секретный ключ клиента (Client Secret)
Эти данные нужны для подтверждения, что запросы действительно идут от вашего приложения.
Шаг 2. Пользователь заходит на сайт
Пользователь открывает ваше приложение и хочет войти в систему. Для этого ваше приложение предоставляет ему ссылку для авторизации, которая перенаправит его к OAuth-провайдеру.
Шаг 3. Пользователь входит и подтверждает доступ
Когда пользователь нажимает на ссылку, его перенаправляют на страницу входа в сервис провайдера. Пользователь вводит свои данные для входа и видит экран подтверждения, где провайдер спрашивает, согласен ли он предоставить доступ к своим данным вашему приложению.
Шаг 4. Получение кода авторизации
После того как пользователь подтверждает доступ, провайдер перенаправляет его обратно на URL (указанный на шаге 1), одновременно передавая код авторизации.
Шаг 5. Обмен кода на токен доступа
Ваше приложение получает код авторизации и отправляет его на сервер авторизации OAuth-провайдера для получения токена доступа. Сервер авторизации проверяет код и, если все в порядке, возвращает токен доступа (иногда еще и токен для продления доступа после истечения срока действия основного токена). Теперь ваше приложение может многократно использовать токен доступа для получения информации о пользователе (до истечения срока действия токена).
OAuth поддерживает разные сценарии авторизации, но описанная выше схема остается самой популярной.
А какой способ авторизации используешь в своих проектах ты?
Комментарии