Certificado de cliente vs HMAC

2

Mi equipo está trabajando en el proyecto de API web para un cliente que llamará a esta API. Ahora estamos pensando en la autenticación. Nos hemos detenido en dos opciones HMAC y certificados de cliente

  • HMAC :

    • pros : sin caducidad (solo un par de ID de cliente y clave secreta),
    • contras : lógica compleja para que el cliente implemente el token HMAC.
  • Certificado de cliente :

    • pros : simple para el cliente (solo adjunte el certificado del cliente a httprequest),
    • contras : caducidad, es necesario admitir la renovación de certificados.

Por favor, ayúdame con los pros y los contras aquí.

    
pregunta mtkachenko 14.12.2015 - 12:40
fuente

2 respuestas

6

En general, recomendaría HMAC a menos que tenga requisitos particulares para los certificados de cliente. Las razones son:

Vencimiento

Si bien es cierto que no hay una caducidad obligatoria con HMAC, en realidad, debe caducar cualquier tipo de contraseña / secreto / clave de cifrado de forma regular. Esto se aplica mediante certificados, pero debe hacerlo como una cuestión de política para cualquier clave de este tipo. No creo que este sea un verdadero profesional para HMAC.

Intermediarios

Si tiene algún intermediario como un Firewall de aplicaciones web que necesita inspeccionar solicitudes, puede ser complejo usar certificados de cliente. Esta es una estafa para certificados de cliente y un profesional para HMAC.

Complexity

¿Es realmente tan complejo crear un HMAC? Hay bibliotecas de clientes para hacer esto para Ruby, Java, .Net, Node y Python. Dejé de buscar en Google, pero estoy seguro de que las plataformas más modernas tienen una biblioteca existente. Probablemente este es un profesional para los certificados como dijiste, pero en mi opinión es relativamente menor.

Familiaridad

HMAC se usa en algunas API populares de diferentes sectores del mercado (por ejemplo, Twitter, AWS, Xero). Creo que los certificados de clientes son relativamente poco frecuentes fuera de la configuración de la empresa. Este es un profesional para HMAC y una estafa para certificados de clientes. Descargo de responsabilidad: Esto es subjetivo. No tengo pruebas sólidas de esto, solo se basa en lo que he experimentado en la práctica.

    
respondido por el Mike Goodwin 14.12.2015 - 14:54
fuente
2

Tenga cuidado, está confundiendo dos tipos de autenticación aquí:

  • Los HMAC autentican un solo mensaje solo y no un usuario / cliente completo ( eche un vistazo aquí, por favor ). Los HMAC pueden necesitar un usuario / cliente ya autenticado o confiable de antemano.
  • Los certificados de cliente se autentican, como el nombre ya sugiere, clientes.

¿Dependiendo de las especificaciones de tu api, podrías usar ambas?

    
respondido por el Sebastian 14.12.2015 - 13:11
fuente

Lea otras preguntas en las etiquetas