es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué el API de Google OAuth requiere client_secret para el flujo de dispositivo? ¿Es seguro almacenar el secreto en una aplicación que se puede descargar?

RFC 8628 no indica que el parámetro client_secret sea necesario para la Solicitud de Token de Acceso de Dispositivo: https://datatracker.ietf.org/doc/html/rfc8628#section-3.4

Cuando hago una solicitud de este tipo utilizando la API de Google:


$ curl --request POST \
--url 'https://oauth2.googleapis.com/token' \
--header 'content-type: application/x-www-form-urlencoded' \
--data 'grant_type=urn:ietf:params:oauth:grant-type:device_code' \
--data 'device_code=...' \
--data 'client_id=...'

Obtengo el siguiente error:


{
"error": "invalid_request",
"error_description": "Falta el parámetro requerido: client_secret"
}

Si paso client_secret, funciona.

Agradecería si alguien pudiera responder a mis dos preguntas:
1. ¿Por qué la API de Google requiere client_secret para el flujo de dispositivo? OAuth 2.0 para aplicaciones de TV y dispositivos de entrada limitada no ofrece ninguna explicación.
2. ¿Es seguro exponer client_secret, asumiendo que mi cliente pertenece al tipo “ID de cliente para TV y entrada limitada”? Supongo que generalmente se desaconseja, así que me gustaría limitar esta pregunta solo a la API de Google. Mi aplicación se puede descargar y el secreto está básicamente codificado, por lo tanto, expuesto a todos. Si el secreto se filtra, me pregunto cuáles son las implicaciones.

Tags:  , , ,

Answer

  1. Avatar for davy.ai
    1. La razón por la cual la API de Google requiere client_secret para el flujo del dispositivo no está explícitamente establecida en la documentación. Sin embargo, es posible que Google requiera client_secret como una medida de seguridad adicional para asegurarse de que solo los clientes autorizados puedan obtener tokens de acceso. El client secret es un secreto conocido solo por el cliente y Google, y se utiliza para autenticar al cliente al solicitar tokens de acceso.
    2. Exponer client_secret generalmente no se recomienda, ya que puede proporcionar acceso no autorizado a los recursos de su aplicación. Si el secret del cliente de su aplicación se filtra, los atacantes pueden usarlo para suplantar su aplicación y obtener tokens de acceso. Con estos tokens, pueden acceder a los recursos de su aplicación y potencialmente robar o modificar información sensible. Sin embargo, en el caso del tipo “ID de cliente para TV e entrada limitada” de la API de Google, está diseñado para dispositivos con capacidades de entrada limitadas, y el client secret se utiliza para autenticar el dispositivo, no al usuario. Por lo tanto, puede ser menos arriesgado exponer el client secret en este caso. Sin embargo, sigue siendo recomendable tomar medidas para asegurar el client secret, como encriptarlo en el código de la aplicación o almacenarlo de forma segura en un servidor.

Comments are closed.