Должны ли клиенты получать токены доступа 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?
Наиболее распространенным аргументом является то, что вы не должны помещать конфиденциальную информацию в строку запроса (параметр GET), поскольку веб-серверы обычно регистрируют URL-адрес HTTP-запроса. Данные POST могут быть сколь угодно длинными, поэтому обычно не регистрируются. Поэтому, когда вы имеете дело с чем-то вроде client_secret или кода (хотя это одно время использует), имеет смысл иметь это, переданное в полезной нагрузке POST.
IMHO, если вы используете поток OAuth 2.0, который не требует client_secret (или вы помещаете его в заголовок HTTP-авторизации, как рекомендуется). Я не вижу проблемы с предоставлением GET.
Связанные вопросы
Похожие вопросы
Посмотрите другие вопросы по меткам authentication authorization https oauth oauth-2.0 или Задайте вопрос