В процессе авторизации с использованием OAuth клиент действительно взаимодействует с авторизационным сервером, и различается несколько этапов, в зависимости от используемого потока OAuth (например, Authorization Code Flow). Давайте рассмотрим этот процесс подробнее, чтобы прояснить ваши вопросы.
1. **Получение кода авторизации**:
- Клиент (ваше приложение) сначала перенаправляет пользователя на авторизационный сервер с помощью запроса, который включает `client_id`, необходимые разрешения (scopes) и другие параметры.
- После успешной аутентификации и согласия пользователя, авторизационный сервер перенаправляет пользователя на URL обратного вызова (redirect URI) вашего приложения и передает `authorization code` в качестве параметра.
2. **Обмен кода авторизации на токен доступа**:
- На этом этапе ваш клиент (приложение) должен отправить `authorization code` на авторизационный сервер вместе с `client_id`, `client_secret`, `redirect_uri` и самим кодом.
- Запрос обычно делается к конечной точке (endpoint) для обмена кода (token endpoint) с помощью POST-запроса.
- В ответ на этот запрос авторизационный сервер выдает токен доступа (access token), а иногда и токен обновления (refresh token).
3. **Использование токена доступа**:
- После получения токена доступа ваш клиент может использовать его для выполнения запросов к защищённым ресурсам (например, к вашему REST API).
- Токен доступа включается в заголовок Authorization каждого запроса, как правило, в формате `Bearer <access_token>`.
Таким образом, ответ на ваш вопрос:
- Да, сначала клиент должен отправить `authorization code` на сервер для обмена его на токен доступа. После получения токена доступа вы уже можете выполнять другие запросы от имени пользователя.
Этот процесс обеспечивает дополнительный уровень безопасности, поскольку `authorization code` сам по себе не предоставляет доступ к защищённым ресурсам без обмена на `access token`.