Autenticar aplicativo móvel nativo usando uma API REST


16

Estou iniciando um novo projeto em breve, que tem como alvo aplicativos móveis para todas as principais plataformas móveis (iOS, Android, Windows). Será uma arquitetura cliente-servidor.

O aplicativo é informativo e transacional. Para a parte transacional, eles precisam ter uma conta e efetuar login antes que uma transação possa ser feita. Eu sou novo no desenvolvimento móvel, por isso não sei como a parte de autenticação é feita nessas plataformas. Os clientes se comunicarão com o servidor por meio de uma API REST. Estará usando HTTPS, é claro.

Ainda não decidi se quero que o usuário efetue login quando abrir o aplicativo ou apenas quando realizar uma transação.

Eu recebi as seguintes perguntas:

1) Como o aplicativo do Facebook, você só insere suas credenciais quando abre o aplicativo pela primeira vez. Depois disso, você será conectado automaticamente sempre que abrir o aplicativo. Como alguém consegue isso? Simplesmente criptografando e armazenando as credenciais no dispositivo e enviando-as sempre que o aplicativo é iniciado?

2) Preciso autenticar o usuário para cada solicitação (transacional) feita na API REST ou usar uma abordagem baseada em token?

Por favor, sinta-se livre para sugerir outras formas de autenticação.

Obrigado!

Respostas:


14

Você passa nome de usuário / senha para o método de login da sua API RESTful e ela retorna o token de acesso. Esse token de acesso é apenas uma sequência exclusiva (para o sistema).

O dispositivo armazena (persiste) esse token de acesso. Cada vez que você envia uma solicitação RESTful ao servidor, coloca esse token de acesso no cabeçalho da solicitação HTTP. O servidor encontra o usuário por token de acesso e, com êxito, atende à solicitação.

nome de usuário / senha não deve ser armazenado no dispositivo.


É possível que terceiros (hackers, etc.) obtenham o token de acesso?
Supercell 11/11

Isso é possível, é claro. Especialmente se você não estiver usando HTTPS. A maioria dos clientes de e-mail on-line está solicitando que você efetue login novamente de tempos em tempos. O token tem um tempo de expiração definido para duas semanas, por exemplo. Então, uma vez a cada duas semanas, você precisará se conectar novamente.
C-smile

Como o token de acesso será gerado e o token de acesso será salvo no servidor.
Ghyath Serhal

@ c-smile O Facebook nunca me pediu para entrar novamente. Portanto, não vejo realmente a diferença entre uma senha e um token de acesso.
Mickael Marrache 29/04

Eu sei que é tarde demais. mas o facebook e outros fornecedores emitem token de atualização, token de acesso e tempo de expiração (para token de acesso) na hora do login. o token de acesso tem vida curta e o novo token de acesso pode ser gerado usando o token de atualização. Próximo login pode criar novo token de atualização, fazendo o velho inválido
Cerlin
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.