Подтвердить что ты не робот

Почему необходимо использовать авторизированный токен запроса OAuth 1.0 для токена доступа?

Мне интересно, какие причины для OAuth 1.0 требуют, чтобы обмен данными с провайдером данных проходил в оба конца, чтобы обменять авторизованный токен запроса на токен доступа.

Мое понимание рабочего процесса OAuth 1.0:

  • Запрос сайта (потребителя) получает маркер запроса с сайта поставщика данных (поставщика услуг).

  • Запрос сайта запрашивает сайт поставщика данных для аутентификации пользователя, передавая обратный вызов.

  • После того как пользователь был аутентифицирован и разрешен запрашивающий сайт, пользователь направляется обратно на запрашивающий сайт (потребитель) через предоставленный обратный вызов, который передает обратно текущий авторизационный токен и код подтверждения.

  • Запрашивающий сайт обменивает токен запроса на токен доступа.

  • Запрашивающий сайт использует токен доступа для получения данных с сайта поставщика данных.

Предполагая, что я правильно понял, почему callback просто не предоставил токен доступа запрашивающему сайту непосредственно на шаге 3, исключая шаг 4? Почему требуется обменять токен запроса для необходимого токена доступа? Он существует исключительно для потребителей, которым требуется, чтобы пользователи вводили код проверки вручную, с мыслью, что он будет короче и проще, чем сам токен доступа?

4b9b3361

Ответ 1

Джо,

С OAuth 1.0 важно помнить, какие фрагменты происходят "сервер-сервер", а какие части связаны с браузером ( "пользовательский агент" ). "Точка" OAuth, если хотите, - это получить маркер доступа на стороне сервера и секретный к серверу конечных пользователей, не имея при этом тайного прохода через браузер.

С учетом этого: когда пользователь разрешает токен запроса, "обратный вызов" происходит через пользователь-агент через перенаправление HTTP. Другими словами, любые данные (т.е. Код верификатора и токен запроса, а не маркер запроса SECRET) в обратном вызове "просматриваются" браузером. Вот почему маркер доступа (и секрет) не может быть параметрами шага обратного вызова: они должны передаваться непосредственно с сервера на сервер, а не через браузер.