On 3/2/15 9:41 AM, Marcelo Milhomem wrote:
Enviar o ID do usuário em toda requisição é ruim, ele acaba sendo redundante e fazendo par com o token.
Sim e não. Eu apenas quiz citar exemplos.

O token é uma string única, randômica e temporária associada a um usuário e persistida em algum database. É enviado em toda requisição através de header normalmente. É uma pratica bem comum e viável.

A questão do certificado no client é uma coisa que quero muito fazer a um tempo, mas realmente temos poucas ferramentas prontas, temos que fazer. O Renato falou que o HTTPS já faz isso e ficou a impressão de que isso seria uma camada a mais e não é, ele é o próprio SSL do HTTPS, você só muda as chaves que estão em jogo.

A grande vantagem disso é que não precisa ter um banco de dados central de tokens, ou um controlador de autenticação que deve ser consultado a cada requisição. O client não mandaria mais um token e sim sua identificação confiável por qualquer servidor HTTP que consiga resolver SSL. Você só precisaria distribuir nesses servidores uma chave CA.

Com essa abordagem a quantidade de requisições em banco de dados pode cair pela metade e tira da sua arquitetura o ponto único de falha.

Um tópico importante citado por outros é que o seu método de autenticação tem que ser suportado largamente
quando sua API é pública.
e esse método é nativo para os Browsers e muito bem documentado, eu só vi algumas limitações no mundo Mobile quando se tenta usar um Certificado auto-assinado.

Abs,

On Mar 1, 2015, at 11:46 PM, Eduardo Almeida <[email protected] <mailto:[email protected]>> wrote:

On 3/1/15 11:34 PM, Eduardo Almeida wrote:
O user autentica o client uma primeira vez e recebe um token para as consecutivas requisições feita á API. Tokens expiram. É lógico que você pode definir a vida útil deles de acordo com sua necessidade.
Dá para se implementar coisas interessantes sobre os tokens.

O token pode conter informações associadas que poderão ser usadas para confrontar com informações obtidas sobre o cliente em cada requisição.

Por exemplo

- você pode associar um 'user id' (geralmente eu envio, via headers, o id do user que está chamando o end point) - você pode associar uma 'allowed origin' (e negar requisições com esse token se feita de uma origem desconhecida)

Enfim ... há uma série de coisas que poderão ser implementadas no sentido de validar o acesso. é óbvio que há coisas que podem ser burladas quando feita a requisição (mascarando), porém, pra burlar isso, a pessoa precisa conhecer todo seu esquema de validação.




--
Eduardo Almeida - Software Engineer
[email protected] - 27 3261-0082 / 27 9839 3755

*WEB2 Solutions* - Inovando, sempre!
<dhtmlx_certified.png>
=begin disclaimer
  Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
SaoPaulo-pm mailing list: [email protected] <mailto:[email protected]>
L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
=end disclaimer



=begin disclaimer
    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
  SaoPaulo-pm mailing list: [email protected]
  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
=end disclaimer


--
Eduardo Almeida - Software Engineer
[email protected] - 27 3261-0082 / 27 9839 3755

*WEB2 Solutions* - Inovando, sempre!
=begin disclaimer
   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
 SaoPaulo-pm mailing list: [email protected]
 L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
=end disclaimer

Responder a