Hay 3 formas básicas de generar tokens y firmas para autenticar las llamadas desde la aplicación móvil a los servicios web.
1. OAuth Core 1.0a
Oauth 1.0a es el más seguro de los tres protocolos comunes. Oauth1 es un protocolo ampliamente utilizado, probado, seguro y basado en firmas. El protocolo utiliza un valor de firma criptográfica (generalmente HMAC-SHA1) que combina el token secret, nonce y otra información basada en solicitudes. La gran ventaja de OAuth 1 es que nunca pasa directamente el secreto del token a través del cable, lo que elimina por completo la posibilidad de que alguien vea una contraseña en tránsito. Este es el único de los tres protocolos que se pueden usar de forma segura sin SSL (aunque aún debe usar SSL si los datos transferidos son confidenciales). Sin embargo, este nivel de seguridad tiene un precio: generar y validar firmas puede ser un proceso complejo. Debe usar algoritmos de hash específicos con un conjunto estricto de pasos. Sin embargo, esta complejidad ya no es un problema, ya que cada lenguaje de programación principal tiene una biblioteca para manejar esto por usted.
- ¿Hay alguna evidencia de que el espaciado simple después de un período es mejor que el espaciado doble para la usabilidad del sitio web o la aplicación móvil?
- ¿Cómo suele ser el back-end de una aplicación móvil?
- ¿Qué problemas aún deben resolverse con la aplicación de Instagram?
- ¿Puedo obtener consejos sobre qué considerar antes de comenzar a desarrollar una aplicación? Tengo la idea, los detalles y un diseño aproximado.
- ¿Se puede usar DigitalOcean como servidor para almacenar fotos y bases de datos para una aplicación móvil similar a Instagram?
2. Autenticación básica con TLS
La autenticación básica es la más fácil de implementar, ya que la mayoría de las veces se puede implementar sin bibliotecas adicionales. Todo lo necesario para implementar la autenticación básica generalmente se incluye en su marco estándar o biblioteca de idiomas. El problema con la autenticación básica es que es, bueno, “básico”, y ofrece las opciones de seguridad más bajas de los protocolos comunes. No hay opciones avanzadas para usar este protocolo, por lo que solo está enviando un nombre de usuario y contraseña codificados en Base64. La autenticación básica nunca debe usarse sin el cifrado TLS (anteriormente conocido como SSL) porque la combinación de nombre de usuario y contraseña se puede decodificar fácilmente de lo contrario.
3. OAuth 2.0 – OAuth
Oauth2 suena como una evolución de Oauth1, pero en realidad es una versión completamente diferente de la autenticación que intenta reducir la complejidad. La especificación actual de Oauth2 elimina las firmas, por lo que ya no necesita usar algoritmos criptográficos para crear, generar y validar firmas. Todo el cifrado ahora es manejado por TLS, que es obligatorio. No hay tantas bibliotecas Oauth2 como bibliotecas Oauth1a, por lo que integrar este protocolo en su API puede ser más difícil. El autor principal y editor del estándar Oauth2 renunció, con esta publicación informativa. Debido a esta inestabilidad en el comité de especificaciones y porque la configuración predeterminada de OAuth2 es menos segura que OAuth1 (sin firma digital significa que no puede verificar si el contenido ha sido alterado) con antes o después del tránsito), recomiendo OAuth1 sobre OAuth2 para aplicaciones de datos confidenciales. OAuth2 podría tener sentido para entornos menos sensibles, como algunas redes sociales.
Por supuesto, siempre puede crear su propia forma personalizada de generar este token y firma para que su aplicación se comunique de forma segura con su servicio web. Deben evitarse los protocolos de autenticación personalizados a menos que realmente sepa lo que está haciendo y comprenda completamente todas las complejidades de las firmas digitales criptográficas. La mayoría de las organizaciones no tienen esta experiencia, por lo que recomiendo OAuth1.0a como una alternativa sólida.
O genere una API_KEY única para cada usuario, como lo hicieron la mayoría de los servicios de terceros (como mailgun).