Должны ли клиенты получать токены доступа OAuth 2, используя GET или POST? - PullRequest
23 голосов
/ 26 ноября 2011

В черновике OAuth 2.0 v2-22 в разделе 3.2 сказано:

Клиент ДОЛЖЕН использовать HTTP-метод POST при выполнении запросов на токен доступа.

Однакоесли вы посмотрите на реализации Facebook и Foursquare OAuth2, они попросят клиентов сделать простой запрос GET для запроса маркера доступа.Они просят клиентов разместить client_id и client_secret в URL.

Я создаю сервер OAuth 2, и после просмотра реализаций Facebook и Foursquare я настоятельно рекомендую также нарушить протокол, чтобы клиенты могли запрашивать доступтокен через GET.Мой сайт использует протокол SSL, похожий на Facebook и Foursquare.

Поэтому у меня такой вопрос: есть ли веские причины, по которым я не должен позволять клиентам запрашивать токены доступа с помощью метода GET через HTTPS?

1 Ответ

10 голосов
/ 26 ноября 2011

Наиболее распространенным аргументом является то, что вы не должны помещать конфиденциальную информацию в строку запроса (параметр GET), поскольку веб-серверы обычно регистрируют URL-адрес HTTP-запроса.Данные POST могут быть произвольно длинными, поэтому они обычно не регистрируются.Поэтому, когда вы имеете дело с чем-то вроде client_secret или кодом (хотя это одноразовое использование), имеет смысл передать это в полезную нагрузку POST.

IMHO, если вы используете поток OAuth 2.0, которыйне требует client_secret (или вы указываете это в заголовке HTTP Authorization, как рекомендуется) - я не вижу проблемы с разрешением GET.

...