Tengo una aplicación web, donde los usuarios inician sesión con Google (OAuth 2.0). Esta aplicación web utiliza una API REST (figo.io) en segundo plano, así que tengo que crear un usuario de API con credenciales.
Ahora tengo el siguiente problema: tengo que generar un nombre de usuario y una contraseña de la nada. El nombre de usuario es trivial, pero la contraseña ...
Dado que mis usuarios inician sesión con Google, no conozco su contraseña y no quiero pedirles una contraseña adicional para una mejor experiencia de usuario. Lo único que tengo son sus datos de perfil de Google+.
Entonces, ¿cómo genero esta contraseña de REST API y la almaceno de forma segura? En sus docs , los desarrolladores de API afirman:
UN USUARIO DE FIGO POR USUARIO DE LA APLICACIÓN
[...]
En este escenario, se recomienda crear los usuarios de figo con un nombre de usuario directamente asignable a partir de los ID de usuario de su aplicación, por ejemplo. utilizando [su ID de usuario] @figo. [su dominio de aplicación]. De esa manera, no tiene que guardar ninguna información adicional y aún así no bloquear la dirección de correo electrónico de su usuario para el uso explícito de figo. Se recomienda alguna asignación similar, pero más segura, para la contraseña de los usuarios .
No puedo pensar en una forma segura para lograr este último bit acerca de la contraseña.
Hasta ahora, la mejor solución que se me ocurrió es usar los UUID de mis usuarios (un hash) y la ID de Google (de su perfil, es un int) y hash esos dos valores en una contraseña.
Pero si un atacante pirateara mi base de datos, sabría la identificación de Google y el uuid ...
¿Alguno de ustedes tiene una gran idea? ¿O es que "piratear mi base de datos" no es un problema que deba preocuparme? Debo decir que la API de figo se utiliza para la banca en línea, por lo que realmente quiero que los datos de los usuarios estén seguros.
P.S .: Solo para tu información, uso un servidor de nodo / expreso en esta aplicación web. Yo uso el pasaporte de Google OAuth.