He estado desarrollando una aplicación que admitirá muchos usuarios. Lo que pasa es que no puedo entender cómo autenticar al cliente / usuario.
Estoy creando una aplicación como http://quickblox.com/ donde les daré credenciales a mis usuarios y los usarán para construir N aplicaciones en las que no pueden poner su nombre de usuario y contraseña para autenticarse.
Supongamos que va de la siguiente manera. (Al igual que QuickBlox)
1. El usuario crea una cuenta en mi sitio web.
2. El usuario puede crear claves N API y secretar credenciales. (Para múltiples aplicaciones)
3. El usuario usará estas credenciales en sus aplicaciones (Android, iOS, Javascript, etc.) para hablar con mis API REST.
(Las API REST tienen acceso de lectura y escritura).
¿Mi preocupación?
Los usuarios pondrán sus credenciales (clave API y clave secreta) en las aplicaciones que creen, ¿qué sucede si alguien obtiene estas claves e intenta imitar al usuario? (Descompilando APK o buscando directamente en el código JavaScript.
¿Me equivoco en alguna parte?
Estoy confundido con el arquitecto de este mecanismo de usuario de tres niveles.