Этот вопрос проверяет понимание протокола OAuth, который позволяет приложениям получать ограниченный доступ к данным пользователя без передачи пароля.
OAuth позволяет пользователю дать доступ к своим данным на другом сервисе (например, Google) без раскрытия пароля. Приложение получает токен доступа, который можно использовать для запросов от имени пользователя. Процесс включает в себя перенаправление на сервис авторизации и получение токена.
Клиент (Client) — приложение, запрашивающее доступ (например, сайт).
Ресурсный сервер (Resource Server) — сервис с данными пользователя (Google, GitHub).
Сервер авторизации (Authorization Server) — выдаёт токены.
Владелец ресурса (Resource Owner) — пользователь.
Перенаправление
Клиент отправляет пользователя на сервер авторизации с параметрами:
client_id (идентификатор приложения)
redirect_uri (куда вернуть код)
scope (запрашиваемые права)
Согласие пользователя
Пользователь входит в аккаунт и разрешает доступ.
Получение кода
Сервер авторизации перенаправляет обратно с code в URL.
Обмен кода на токен
Клиент отправляет code + client_secret на сервер и получает:
access_token (для доступа к API)
refresh_token (для обновления токена)
POST /token HTTP/1.1
Host: oauth-server.com
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code
&code=AUTH_CODE
&redirect_uri=https://client.com/callback
&client_id=CLIENT_ID
&client_secret=CLIENT_SECRETКогда использовать:
Вход через соцсети (Google, Facebook).
Доступ к API (GitHub, Twitter).