Estou desenvolvendo um aplicativo que suporta muitos usuários. O problema é que não consigo descobrir como autenticar o cliente / usuário.
Estou criando um aplicativo como http://quickblox.com/, onde darei credenciais aos meus usuários e eles os usarão para criar N aplicativos nos quais não poderão colocar seu nome de usuário e senha para se autenticar.
Vamos assumir que segue como segue. (Assim como o QuickBlox)
1. O usuário cria uma conta no meu site.
2. O usuário pode criar chaves N API e secretar credenciais. (Para vários aplicativos)
3. O usuário usará essas credenciais em seus aplicativos (Android, iOS, Javascript etc ...) para conversar com minhas APIs REST.
(APIs REST têm acesso de leitura e gravação.)
A minha preocupação?
Os usuários colocam suas credenciais (chave API e chave secreta) nos aplicativos criados, e se alguém obtiver essas chaves e tentar imitar o usuário? (Ao descompilar o APK ou pesquisar diretamente no código JavaScript.
Estou errado em algum lugar?
Estou confuso ao arquitetar esse mecanismo de usuário de três níveis.