Estoy viendo dos tipos diferentes de autenticación ampliamente utilizados, uno de los cuales es mucho más complejo que el otro. Uno son los tokens de identificación de sesión simples que se utilizan en la mayoría de los sitios web (el usuario envía información de inicio de sesión, recibe un token y lo pasa con cada solicitud futura como autorización). La otra es la firma HMAC utilizada en algunas API (usa claves públicas / privadas para la codificación de mensajes).
Desde el exterior, el método HMAC parece mucho más seguro. Los mensajes no pueden ser falsificados ni duplicados, sabe que el mensaje siempre es auténtico. Sin embargo, requiere mucho más trabajo para empaquetar y registrar cada solicitud, y requiere una forma para que el cliente obtenga acceso a las claves públicas / privadas que se utilizan para la firma.
Por contrato, los tokens han existido por mucho tiempo, y parecen ser relativamente seguros si se usan correctamente (solo se transmiten por SSL, se pasa un token nuevo con cada respuesta del servidor, se registra el último token utilizado, etc.), y no requieren ningún manejo de claves.
Entonces, ¿por qué existe la firma HMAC en la web? ¿Hay escenarios que los tokens de sesión simples no puedan proteger? Si es así, ¿por qué se siguen utilizando los tokens?
Los tokens son mucho más fáciles de diseñar para clientes ligeros cuando no tengo que encontrar una forma de pasar las llaves, pero tampoco quiero dispararme a mí mismo al pasar por alto los agujeros de seguridad inherentes. / p>