Autenticação de Serviços REST

[quote=FernandoFranzini]Eu não uso rest ainda…tudo aqui esta maravilhosamente rodando SOAP!!
Eu vi no ultimo artigo da revista Java Magazine edição 83 o camarada la chamado de João Savio C. Longo sugere o uso de OAuth para autenticação e autorização em WS Rest.


http://oauth.net/

[/quote]

Opa Fernando,

Mas você já se precisou decidir entre SOAP ou REST? Teve alguma característica que te influenciou?

[]'s

[quote=AUser]
Opa Fernando,
Mas você já se precisou decidir entre SOAP ou REST? Teve alguma característica que te influenciou?
[]'s[/quote]
Sim…uso SOAP hoje por que:

  • Mais usado hoje
  • Mais ferramentas
    Com a criação do WSDL REST, esta praticamente se tornando um “SOAP”, usando protocolo HTTP.
    Ou seja, na verdade mesmo, eliminou apenas o overred…
    Mas nos temos q estar preparado para ambos…

Se seu sistema for web, SOAP não é uma opção.

Pois é galera, vi ser mencionado o oAuth como opção. Acontece que as implementações de oAuth que vi sempre resolvem o problema de autenticação onde existem 3 envolvidos.
1 - Um provedor de informação, por exemplo, um site que armazena fotos.
2 - Um consumidor de serviço, por exemplo, um site que deseja buscar fotos no provedor de informação, por exemplo, buscar fotos.
3 - O usuário que é dono da informação no site provedor, por exemplo, um usuário que tem as fotos armazenadas no site que armazena fotos.

Daí ocorre a chamada “Dance” no jargão oAuth, onde o usuário autoriza o consumidor de serviços a utilizar os dados no provedor em seu nome.

Existem outros cenários, por exemplo, quando você aceita que um site utilize sua conta do Google ou Facebook para se autenticar neste site, geralmente é feito com oAuth também. No oAuth 2, existe um outro modelo chamado de 2-legged que, pelo que entendi, serviria para autenticação simples entre usuário e site de serviços diretamente.

O fato é, quando temos um implementação REST, estamos dispostos a entregar recursos / estados armazenados em um servidor para qualquer cliente que chame por uma URL / verbo HTTP. Não podemos partir da premissa que temos um browser do outro lado, pode ser por exemplo, um cliente mobile, uma aplicação nativa em iOS ou Android, que não suporta uso de cookies e JSESSIONIDS da vida.

A questão continua aberta, como tratar a autenticação e manutenção desta autenticação entre requests, em um modelo REST de desenvolvimento?

Suporta sim…faz tempo…

Use autenticação por request!!! Minimize o impacto usando cache de autenticações para não gastar recursos…entre as repetidas autenticações.

Putz, implementa mesmo, via [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways];, no caso do iOS.
Analisando melhor o meu próprio post, acho difícil realmente um dispositivo ser capaz de invocar URLs e não implementar a guarda de cookies. Vivendo e aprendendo.
Valeu pela informação Fernando Franzini.

[quote=eldontc]Putz, implementa mesmo, via [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways];, no caso do iOS.
Analisando melhor o meu próprio post, acho difícil realmente um dispositivo ser capaz de invocar URLs e não implementar a guarda de cookies. Vivendo e aprendendo.
Valeu pela informação Fernando Franzini.[/quote]

Twitter direciona para o browser para completar a autorização via OAuth.

Para uma autenticacao segura REST, você pode usar o mesmo procedimento que a Amazon utiliza:

http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/

Os anos se passaram… Alguém conseguiu implementar algo legal para segurança REST ?

Usar o OAuth 2 com spring security 4 é muito complexo. Não vejo um tutorial simples com alguma solução funcional.

Me parece um canhão para matar uma formiga, ninguém tem um meio termo ?

abcs

Para informação sobre autenticação: