Должны ли клиенты получать токены доступа OAuth 2 с помощью GET или POST?

Проект 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?

+23
источник поделиться
1 ответ

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

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

+9
источник

Посмотрите другие вопросы по меткам или Задайте вопрос