2012-06-26 14 views
19

Si todas las llamadas de API se envían a través de https, ¿HMAC agrega alguna seguridad adicional? Por ejemplo, en oauth 2, el cliente envía su clave secreta al proveedor sin ningún tipo de hash. ¿Esto se considera seguro porque está por encima de https? Si bien no es estrictamente oauth, ¿el uso de HMAC en esta llamada hará que Oauth 2 sea más seguro? Si es así, ¿por qué no es una parte estándar de oauth 2?¿Es necesario HMAC si todas las llamadas API se realizan a través de https?

Respuesta

13

El estándar OAuth 2 requiere que el servidor de autorización DEBE usar HTTPS en todos sus puntos finales y el cliente DEBE usar una devolución de llamada protegida con HTTPS. Dado que los contenidos del mensaje (encabezados, parámetros de consulta y fragmentos que consideran OAuth) son conocidos solo por el servidor y el cliente, el uso de una conexión HTTPS se considera seguro. Por lo tanto, no hay ganancia utilizando una firma separada para la solicitud de autorización, es por eso que tales firmas ni siquiera se mencionan en el estándar.

Sin embargo, esto no siempre es válido para la respuesta. Si el cliente recibe la respuesta de autorización a una devolución de llamada sin protección, no puede verificar su validez. En tales casos, un atacante puede enviar resultados de autorización arbitrarios al cliente. Agregar una firma con los parámetros de devolución de llamada, puede evitar esto. Sin embargo, parece ser una mejor solución para usar la autenticación mutua de cliente/servidor con una devolución de llamada HTTPS.

Si bien no hay una ganancia real utilizando firmas durante la autorización, pueden ser útiles para acceder a recursos protegidos para evitar el robo de tokens de acceso. Esta es la razón por la cual el tipo de token de MAC está en el estándar, vea section 7.1.

0

HMAC es para la autenticación que determina quién es usted, https es para la seguridad del transporte que asegura que uno en el centro pueda ver el contenido de su transporte.

Oauth 2 servidor de autorización use la clave secreta o la contraseña para determinar quién es usted. El token de uso del servidor de recursos Oauth2 del servidor de autorizaciones determina quién es usted. Usar https o no depende de si desea proteger su clave secreta y sus tokens.

Cuestiones relacionadas