2011-09-09 12 views
7

Voy a construir un sistema que tenga 2 partes: 1. Sitio web PHP (CakePHP). 2. Aplicación móvil (Android & iPhone).Modelo de autenticación para la aplicación Android

El usuario debe iniciar sesión con usr & pwd para usar mi sistema (web y aplicación móvil). Pero no tengo muchas experiencias con la autenticación de usuario. ¿Qué debo almacenar: usr & pwd, cadena de token. Quiero encontrar un "modelo de autenticación de usuario" para mi sistema (aplicación web y móvil).

¿Alguien tiene experiencia en la autenticación de usuarios? ¿Alguien sabe cómo implementar esto? ¿Algún código de muestra? PLZ me ayude :)

Respuesta

13

Esto es lo que hacemos para nuestras aplicaciones,

  1. En primer lugar, enviar un nombre de usuario y una contraseña para el servidor de nuestra aplicación.

  2. En el servidor, autentican las credenciales y devuelven una respuesta que es una combinación de un token de solicitud y un indicador de éxito.

  3. En nuestra aplicación, verificamos el indicador de éxito. Si se establece en verdadero, guardamos el token de solicitud y lo usamos para todas las próximas solicitudes salientes al servidor.

  4. Ahora cuando el servidor recibe una solicitud, comprueba la base de datos para ver si un usuario tiene este token. Si lo hace, verifica la hora en que se realizó la última solicitud. (Esto es para manejar casos cuando se agota el tiempo de espera del usuario). Si la diferencia entre la hora actual y la última vez solicitada supera el límite establecido, debe responder a la aplicación que se requiere una nueva solicitud de inicio de sesión para generar un nuevo token. De lo contrario, continúe con la solicitud y responda con los resultados.

    Así es como lo hacen los chicos del lado del servidor en mi lugar de trabajo. Estoy trabajando en el lado del cliente. Pero esto es básicamente lo que se hace.

Editar: Sobre el token. Básicamente es una cadena de 32 caracteres que se genera con un método de generador aleatorio. Entonces, cuando un usuario envía una solicitud de inicio de sesión y el inicio de sesión es exitoso, creamos un token usando el método del generador y lo almacenamos en nuestra base de datos del servidor a medida que los usuarios solicitan el token junto con la hora y fecha actual.

Entonces, cuando el usuario envía otra solicitud al servidor, primero tomamos el token y verificamos si existe un usuario con ese token. Si lo hay, el siguiente control es para ver si este es un token de solicitud anterior. Entonces, verificamos la hora actual con el tiempo guardado en la base de datos. Si la solicitud se envió antes del límite (por ejemplo, 5 minutos), actualizamos la última hora de solicitud en la base de datos con la hora actual y devolvemos el resultado al cliente.

Con este método, usted está realizando una autenticación para cada solicitud marcando el token y el último tiempo de solicitud.

Supongamos que desea que su aplicación inicie sesión todo el tiempo hasta que el usuario explicity cierre sesión. En ese caso, no es necesario verificar cada hora de solicitud. Todo lo que necesita hacer es guardar el token de solicitud en el dispositivo cliente. Y cuando el usuario cierre sesión, elimine el token del cliente. Por lo tanto, se le pedirá que inicie sesión la próxima vez, ya que no tiene token. Es un poco más seguro guardar un token de solicitud en el dispositivo cliente que guardar un nombre de usuario y contraseña en este escenario.

Existen muchas funciones para generar tokens aleatorios.

+0

Gracias por su ayuda :) ¿Tiene otra opción para el modelo de autenticación de usuario? Quiero saber toda la opción :) –

+0

Esto es lo que hacemos normalmente. Bueno, tal vez otros responderán con otras opciones. Los sistemas de autenticación siguen evolucionando según el requisito – blessenm

+0

¿Me puede ayudar un poco para comprender cómo funciona el tokening? ¿Necesito generar un token en el servidor cada vez que un usuario inicia sesión? –

Cuestiones relacionadas