webauthentication - Autenticación de API RESTful
webauthn phone (2)
Puede usar la autenticación HTTP a través de SSL y eso es lo suficientemente seguro. Sin embargo, dificulta un poco el consumo de API, ya que requiere que la biblioteca cliente sea compatible con SSL. SSL también puede afectar el rendimiento si está esperando demasiadas llamadas simultáneamente.
La opción de clave API es tan insegura como la autenticación HTTP sin SSL. Si no está preocupado por la seguridad, la clave API es la más fácil para los consumidores de la API.
He encontrado bastantes preguntas sobre este tema en SO, pero no pude encontrar ninguna respuesta a esta pregunta:
¿Debo validar a los usuarios con su nombre de usuario y contraseña, o con una clave API? Y cuáles son los pros y los contras de cada método.
Le pregunto esto porque en mi API, hay un par de métodos que me gustaría bloquear y verificar que el usuario tenga acceso a algún documento o acción. Soy un poco reacio a autenticarme al hacer que el usuario envíe un encabezado HTTP AUTH con su nombre de usuario y contraseña porque se siente inseguro y un poco más complicado para el usuario. Por otro lado, sin embargo, si uso una clave API, ¿cuál es el punto del usuario que crea una contraseña? Ya que ya no lo usarán para acceder a las características de la API.
ACTUALIZAR
Si otros lectores de esto sienten curiosidad por lo que terminé usando, decidí copiar cómo Amazon realiza su validación (buena explicación here : https://www.ida.liu.se/~TDP024/labs/hmacarticle.pdf )
Un buen método es tener un método de inicio de sesión, tomando el nombre de usuario y la contraseña (con suerte sobre TLS). Les das un token de caducidad si se autentican con éxito; el resto de sus llamadas a la API deben contener este token para tener éxito.