Estoy implementando una API REST para nuestras aplicaciones móviles en las que el usuario iniciará sesión utilizando los SDK de varias redes sociales. Actualmente, la estrategia de inicio de sesión es la siguiente:
- Los tokens (access_token en el caso de Facebook, access_token y refresh_token en el caso de Google+) que genera el SDK se envían al punto final de inicio de sesión del servidor API.
- Tras la verificación del token (utilizando el punto final respectivo de la aplicación social), se genera un token web JSON firmado por una cadena aleatoria y se devuelve a la aplicación móvil, que luego la conserva en un almacén seguro de valor-clave. Este token se mantendrá como encabezado de autorización para cualquier otra solicitud.
- La presencia del token significa que el usuario ha iniciado sesión. Cuando el usuario cierra la sesión (o la sesión de redes sociales caduca), el token se elimina.
Tengo las siguientes preguntas sobre esta estrategia:
- La carga útil del token consta de la identificación del usuario y de una fecha de emisión. Actualmente, no hay un mecanismo de expiración implementado. ¿Se requiere esto en este caso?
- ¿Esta estrategia es segura? ¿Puedes ver algún defecto / laguna en él?
- ¿Qué estrategia se debe utilizar para asegurar el punto final de inicio de sesión?