¿Cómo se comunican de forma segura las aplicaciones móviles y los servicios web?

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.

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).

Sí, generalmente en el caso de Android o iOS o cualquier otra aplicación móvil, la comunicación se realiza a través de los servicios REST o SOAP con JSON o XML como formatos de intercambio de datos. Otros mecanismos de comunicación pueden ser socket de servidor, FTP, datagrama UDP, etc.


Por lo general, habrá una capa de servicio de middleware entre los sistemas de backend / backend múltiples y el cliente móvil para adaptar la respuesta de acuerdo con el tipo de clientes que atienden, por ejemplo: cliente móvil nativo, cliente web móvil, etc. Y estos servicios se pueden proteger a través de :

  • Algoritmos de encriptación estándar o personalizados: AES, RSA, etc.
  • Servicios HTTPS – SSL / TLS
  • Mecanismos de autenticación estándar: tokens SAML, ADFS, etc.

Espero que esto ayude.


¡Gracias!

Atentamente,

Ameer Irshad.


More Interesting

¿Debería tener mi propia base de datos para mi aplicación web y aplicación móvil o debería usar un BaaS de terceros como Parse / Build Realtime Apps - Firebase?

¿Cuál es el mejor enfoque para desarrollar una aplicación móvil y web? ¿Se debe elegir un marco como MeteorJS o trabajar con React y React Native?

¿Cuál es la mejor aplicación móvil o sitio web receptivo?

¿Por qué no hay más demanda de ingenieros de CS Security como lo es para los desarrolladores web y de aplicaciones?

¿Cuáles son los temas de detalles de lista más atractivos y receptivos disponibles hoy en día (como pinterest, o aplicaciones de noticias como la aplicación bbc news), que responden completamente y no están vinculados a una tecnología de back-end específica?

¿Cuál es la mejor aplicación web o móvil para mejorar el ajedrez?

¿Es posible que un solo desarrollador cree una aplicación como WhatsApp o Kik? En caso afirmativo, ¿cuánto tiempo puede tomar desarrollar uno?

¿Se puede codificar una aplicación iOS y Android de forma nativa en C ++?

¿Debo elegir el desarrollo móvil multiplataforma, el desarrollo de aplicaciones móviles nativas o el desarrollo web?

Servicio wiki de Whatsapp, ¿cómo funciona este servicio?

¿Qué lenguajes de programación utilizan en China las empresas de nueva creación y las corporaciones? ¿Cómo se comparan las oportunidades de trabajo en la web con el desarrollo de aplicaciones móviles (en China)?

¿Cuál es la mejor aplicación para el desarrollo de bases de datos?

¿Por qué la gente quiere convertir su sitio web en una aplicación y hay algún beneficio de ello?

¿Cuánto cuesta crear una aplicación y hasta su uso en línea oficialmente?

¿Qué es una buena aplicación web para hojas de ruta de productos? Estoy buscando algo que me permita alinear una hoja de ruta del producto con nuestra estrategia de ventas y marketing. No busco nada orientado a tareas y recursos.