¿Qué mecanismo usar para el acceso simple y seguro a la API HTTP?

3

Actualmente estoy trabajando en un servicio que ofrece una API HTTP para clientes móviles.

Quiero que los clientes se autentiquen para poder acceder a mi API. El servidor en sí está haciendo la autenticación, no habrá proveedores externos. La conexión en sí misma está cifrada a través de SSL / TLS.

Mi pregunta ahora es qué mecanismo utilizo después de las credenciales de usuario cuando se verificó. Por lo que sé, los más comunes son:

  • autenticación básica HTTP
  • autenticación de acceso de resumen HTTP
  • autenticación basada en sesión
  • OAuth
  • OAuth2

Personalmente tiendo a seguir con la autenticación basada en sesión, ya que es ampliamente compatible y fácil de usar. También me parece bastante seguro (bueno, hay secuestro de sesión pero no tienes que reenviar tus credenciales cada vez)

Sin embargo, ¿sería una mejora cambiar a la autenticación de acceso de resumen HTTP o incluso a OAuth?

Mejor, Bodo

    
pregunta bodokaiser 24.08.2013 - 19:49
fuente

1 respuesta

1

Para los clientes móviles, el problema potencial con la autenticación basada en sesión es que probablemente tenga que esperar mucho tiempo para la sesión, ya que a los usuarios normalmente no les gusta ingresar sus credenciales cada vez que usan una aplicación.

En ese momento, si eso es aceptable puede depender de cómo esté restringiendo el uso de la ID de sesión. Si todo lo que puede hacer es tomar acciones relativamente no sensibles, entonces podría ser una solución razonable (no realmente tan diferente a un token de acceso OAuth), pero una preocupación podría ser que si un atacante tiene acceso a ese token puede tomar acciones sensibles a la seguridad. Como cambiar las credenciales de los usuarios.

En ese momento, es posible que desee considerar OAuth o algo similar para restringir las acciones que puede realizar un token específico almacenado en un dispositivo móvil.

Otro punto a mencionar sobre HTTP básico o compendio es que usarlos te da el dolor de cabeza de almacenar las credenciales de los usuarios en el cliente.

    
respondido por el Rоry McCune 25.08.2013 - 09:22
fuente

Lea otras preguntas en las etiquetas