Autenticar aplicación móvil nativa usando una API REST

16

Pronto comenzaré un nuevo proyecto, que apunta a la aplicación móvil para todas las principales plataformas móviles (iOS, Android, Windows). Será una arquitectura cliente-servidor.

La aplicación es tanto informativa como transaccional. Para la parte transaccional, deben tener una cuenta e iniciar sesión antes de poder realizar una transacción. Soy nuevo en el desarrollo móvil, así que no sé cómo se realiza la parte de autenticación en estas plataformas. Los clientes se comunicarán con el servidor a través de una API REST. Utilizará HTTPS por supuesto.

Todavía no he decidido si quiero que el usuario inicie sesión cuando abre la aplicación, o solo cuando realiza una transacción.

Tengo las siguientes preguntas:

1) Al igual que la aplicación de Facebook, solo ingresa sus credenciales cuando abre la aplicación por primera vez. Después de eso, inicias sesión automáticamente cada vez que abres la aplicación. ¿Cómo se logra esto? ¿Simplemente encriptando y almacenando las credenciales en el dispositivo y enviándolas cada vez que se inicia la aplicación?

2) ¿Necesito autenticar al usuario para cada solicitud (transaccional) realizada a la API REST o usar un enfoque basado en token?

No dude en sugerir otras formas de autenticación.

¡Gracias!

Supercélula
fuente

Respuestas:

14

Usted pasa el nombre de usuario / contraseña al método de inicio de sesión de su API RESTful y devuelve el token de acceso. Ese token de acceso es solo una cadena única (para el sistema).

El dispositivo almacena (persiste) ese token de acceso. Cada vez que envía una solicitud RESTful al servidor, coloca ese token de acceso en el encabezado de la solicitud HTTP. El servidor encuentra al usuario por token de acceso y, en caso de éxito, cumple la solicitud.

nombre de usuario / contraseña no debe almacenarse en el dispositivo.

c-smile
fuente
¿Es posible que terceros (piratas informáticos, etc.) obtengan el token de acceso?
Supercell
Eso es posible por supuesto. Especialmente si no estás usando HTTPS. La mayoría de los clientes de correo electrónico en línea le piden que vuelva a iniciar sesión de vez en cuando. El token tiene un tiempo de vencimiento establecido en dos semanas, por ejemplo. Entonces, una vez cada dos semanas, deberá volver a iniciar sesión.
c-smile
Cómo se generará el token de acceso y cómo se guardará el token de acceso en el servidor.
Ghyath Serhal
@ c-smile Facebook nunca me pidió que volviera a iniciar sesión. Por lo tanto, realmente no veo la diferencia entre una contraseña y un token de acceso.
Mickael Marrache
Sé que esto es bastante tarde. pero Facebook y otros proveedores emiten un token de actualización, un token de acceso y un tiempo de vencimiento (para el token de acceso) en el momento del inicio de sesión. el token de acceso es de corta duración y se puede generar un nuevo token de acceso utilizando el token de actualización. El siguiente inicio de sesión puede crear un nuevo token de actualización, invalidando el anterior
Cerlin