Коротко: OAuth 2.0 — протокол авторизации, который позволяет приложению получить доступ к данным пользователя без передачи пароля. Приложение получает токен с ограниченными правами (scopes) и использует его для запросов к API.
Роли в протоколе
| Роль | Кто это |
|---|---|
| Владелец ресурса | пользователь |
| Клиент | приложение |
| Сервер авторизации | выдаёт токены |
| Сервер ресурсов | хранит данные и API |
Как это работает
1. Приложение отправляет пользователя на сервер авторизации
2. Пользователь подтверждает доступ
3. Сервер возвращает приложению код
4. Приложение обменивает код на токен
5. Приложение обращается к API с токеномПароль пользователя приложению не передаётся — оно работает только с токеном. Это и есть главная ценность протокола.
Вкладки: ключевые понятия
Основной сценарий — «код авторизации»: безопасный и подходит для сайтов и приложений. Для сервисных интеграций без пользователя есть «учётные данные клиента». Есть и другие, но их применяют редко.
Access token даёт доступ к данным и живёт недолго. Refresh token позволяет получить новый access token без повторного входа пользователя. Токены нужно хранить в защищённом месте.
Scopes задают, что именно разрешено: читать профиль, писать в календарь, отправлять письма. Пользователь видит список и подтверждает его — приложение не получает лишнего.
state и срок жизни токенов. Refresh-токены надёжно защищайте: их утечка даёт долгий доступ к данным пользователя.Практика: подключить OAuth
- Зарегистрируйте приложение в сервисе.
- Получите идентификатор и секрет клиента.
- Укажите адрес возврата после авторизации.
- Перенаправьте пользователя на сервер авторизации.
- Обменяйте код на токен и сохраните его.
- Обновляйте токен через refresh и проверяйте права.
Частые ошибки: причина → решение
| Симптом | Причина | Решение |
|---|---|---|
| Ошибка возврата | неверный redirect URI | указать точный адрес |
| Токен не работает | истёк срок | обновить через refresh |
| Мало прав | не запрошены scopes | добавить нужные |
| Уязвимость | токен в открытом виде | хранить защищённо |
| Подделка запроса | не проверяется state |
проверять параметр |
Проверьте себя
Вопросы и ответы
OAuth прежде всего про авторизацию доступа: он выдаёт право обращаться к ресурсам. Для подтверждения личности поверх него используют OpenID Connect.
Access token короткоживущий и используется для запросов. Refresh token долгоживущий и нужен, чтобы получить новый access без повторного входа пользователя.
Он защищает от подделки запроса: приложение проверяет, что возвращённый ответ относится к его же инициированному запросу. Без проверки возможны атаки.
На сервере, а не в открытом виде в браузере. Клиентские приложения хранят токены в защищённом хранилище, а не в общедоступных переменных.
Итоги
- OAuth 2.0 даёт доступ к данным без передачи пароля.
- Приложение получает токен с ограниченными правами.
- Scopes задают объём разрешённых действий.
- Обязательны HTTPS, защита токенов и проверка
state.
Комментарии
Пока комментариев нет — будьте первым, кто поделится мнением.