Me preguntaba si sería una buena idea ofrecer a los usuarios la elección de un método para asegurar su acceso a la API.
Background:
Estamos creando e implementando aplicaciones para nuestros clientes, lo que les ayuda a hacer su trabajo de manera más eficiente. Cada uno de nuestros clientes está ejecutando una aplicación autónoma y planeamos crear una API que les permita integrar sus herramientas de terceros o lo que sea. No será una API pública sino una privada.
Ahora, al investigar el tema llegué a comprender que el uso de autenticación básica, incluso a través de HTTPS, no es una muy buena idea. Aparentemente, el método preferido sería usar HMAC con nonces. Estoy a favor de asegurar el fuerte, sin embargo, la solución HMAC presenta un problema: es más complicado y requiere que el desarrollador cree primero HMAC y luego lo agregue a una solicitud, básicamente haciendo que la API no sea fácilmente detectable (como no puede escribir curl https://my.url/api/endpoint/
y ver que pasa).
Me llamó la atención que las personas en Stripe usen autenticación básica con token como usuario para que su solicitud de curvatura se vea así: curl -u sk_test_mysecretrandomkeywhatever https://my.url/api/endpoint/
Este es mi libro es una gran ventaja y, si es lo suficientemente bueno para la empresa de procesamiento de pagos, ¿quizás también lo sea para nosotros?
Entonces me puse a pensar: ¿qué pasa si ofrecemos ambas opciones? ¿Quieres usar autenticación básica solamente? Bien, solo puedes usar eso. ¿Uno de sus clientes es un fanático de la seguridad y quiere asegurarse de que su sistema esté seguro? Habilite la autenticación HMAC y comience a jugar con HMAC, etc. ¿Es esa una solución viable o diría que es una farsa de seguridad?
Por favor, arroje algo de luz sobre el tema o al menos apúnteme en la dirección correcta.