A melhor maneira de implementar autenticação para uma API REST


21

Desenvolvemos aplicativos sociais para dispositivos móveis. Todo aplicativo consome serviços da web da API RESTful. Quando implemento o login, normalmente armazeno o nome de usuário e a senha em algum lugar no dispositivo. Então eu os envio e, como resposta, tenho acesso ao meu perfil. Mas também sei que há outra maneira de fazer isso.

De alguma forma, gera um token com um algoritmo específico e envia-o em vez do nome de usuário e senha para obter acesso.

Como devo implementar isso? Devo enviar esse token juntamente com todas as outras solicitações além do login?


11
Isso é autenticação , não autorização . Autenticação = prove que você é quem diz ser. Autorização = provar que você tem permissão para fazer o que solicitou.
tdammers

Eu apenas adicionaria o mesmo comentário às respostas! +1 para você @tdammers Eu editei todo o conteúdo para que a autorização do Google não o traga aqui
Shiplu Mokaddim

Respostas:


14

Existem várias maneiras de implementar a autenticação no contexto RESTful, e é mais seguro enviar apenas tokens em vez de login / senha: você pode facilmente tornar os tokens inválidos por tempo limite ou por outros critérios, e pedir ao usuário para se autenticar novamente. .

Por exemplo, solicitações REST de autenticação usando HMAC . Nesta abordagem, o cliente terá chaves públicas e secretas . Para todas as solicitações que requerem autenticação , você deve adicionar uma chave pública e usar uma chave secreta para calcular o hash da sua solicitação

var myRequest = "https://myserver/resource?publicId=12345&param=value";
var requestHash = hmac_implementation(myRequest);
myRequest = myRequest + '&hmac=' + requestHash;

Agora, o servidor pode identificar a solicitação pela chave pública e calcular o próprio requestHash . Se os dois hashes forem iguais, o usuário estará autorizado.

Aliás, você também precisa usar https para proteger a comunicação em uma rede de computadores - isso reduzirá drasticamente o número de possíveis problemas.


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.