authentication - implementar - ¿Deben los clientes obtener tokens de acceso OAuth 2 usando GET o POST?
oauth2 token (1)
El borrador v2-22 Sección 3.2 de OAuth 2.0 dice:
El cliente DEBE usar el método HTTP "POST" cuando realiza solicitudes de token de acceso.
Sin embargo, si observa las implementaciones de Facebook y Foursquare OAuth2, le piden a los clientes que hagan una simple solicitud GET para solicitar un token de acceso. Piden a los clientes que coloquen el client_id y client_secret en la URL.
Estoy construyendo un servidor OAuth 2 y después de ver las implementaciones de Facebook y Foursquare, también estoy considerando romper el protocolo para permitir a los clientes solicitar el token de acceso a través de GET. La comunicación de mi sitio usa SSL, similar a Facebook y Foursquare.
Así que mi pregunta es esta: ¿hay alguna buena razón por la que no debería permitir que los clientes soliciten tokens de acceso a través del método GET a través de HTTPS?
El argumento más común es que no debe poner información sensible en una cadena de consulta (parámetro GET) ya que los servidores web normalmente registran la URL de solicitud HTTP. Los datos POST pueden ser arbitrariamente largos, por lo que generalmente no se registran. Por lo tanto, cuando se trata de algo como client_secret o código (aunque es de uso único), tiene sentido hacerlo pasar en la carga de POST.
En mi humilde opinión, si está utilizando un flujo de OAuth 2.0 que no requiere el cliente_secreto (o lo pone en el encabezado Autorización HTTP, como se recomienda), no veo un problema para permitir GET.