Autenticación, autorización en clientes móviles nativos (Android)

2

Estoy desarrollando un cliente móvil nativo para la tienda que requiere autenticación del usuario para poder realizar compras.
Tengo la página de mi tienda web, la autenticación la proporciona CMS (OpenCart).
Ahora necesito implementar un inicio de sesión seguro y robusto en dispositivos móviles.
Estoy usando la API REST para obtener datos públicos del sitio web (productos, ventas ...).
Pero, ¿cuál es la mejor opción si necesito proporcionar una conexión segura entre el cliente móvil nativo y mi servidor web? Estoy usando "nativo" para notar que no hay una vista web o algo similar en la aplicación.

Hay una gran cantidad de aplicaciones similares de las tiendas en línea populares (Ali, Ebay, Amazon), todas estas aplicaciones utilizan la autorización sin mecanismos integrados en el navegador, me pregunto cómo implementan esto.

¿Cuáles son las formas posibles de proteger las acciones importantes del usuario en el cliente nativo?

Por supuesto que he leído mucho sobre esto, pero no hay una buena solución, así como ningún artículo describe los enfoques disponibles.

Por favor, sugiera cuál es la forma segura, robusta y no muy difícil de hacer esto.

Estoy agradecido por cualquier ayuda por adelantado.

    
pregunta CROSP 30.05.2015 - 21:11
fuente

1 respuesta

2

Sin entender más de tu aplicación, hay muchas respuestas correctas a esta pregunta.

Una estrategia común es usar el nombre de usuario / contraseña para autenticarse en su API. En la autenticación exitosa, su API creará y devolverá un token de autenticación. Su aplicación pasará el token de autenticación en cada llamada subsiguiente.

El formato típico de un token de autenticación es

username + other data + HMAC(user + data, secret known only to the server)

Cuando su servidor recibe el token de autenticación en una llamada posterior, analiza el nombre de usuario y los demás datos (lo que quiera almacenar), realiza el HMAC y luego lo compara con el HMAC en el token. Si coincide, entonces tiene un inicio de sesión válido, de lo contrario, registre el intento y anule.

Esta estrategia permite que el servidor no tenga estado, ya que cualquier información importante se puede almacenar en el token de autenticación. Si necesita mantener una sesión en el servidor, puede usar un token de autenticación del formato:

session ID + HMAC(session ID, secret known only to the server)

Es probable que desee que session ID sea un número aleatorio seguro y no un puntero de contador o de memoria, ya que no desea que el cliente pueda adivinar otras ID de sesión aunque el cliente no pueda falsificar el token sin el secreto.

    
respondido por el Neil Smithline 30.05.2015 - 22:14
fuente

Lea otras preguntas en las etiquetas