| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/01/2010 17:02:54
|
diguix
JavaChild
![[Avatar]](/images/avatar/16ad66b2d7d7eda19f34e2f6197e2236.jpg)
Membro desde: 27/08/2006 19:53:29
Mensagens: 142
Localização: RJ/Rio de Janeiro
Offline
|
Então pessoal, comecei a criar alguns serviços REST para evitar futurod problemas de acomplamentos entre outras coisas.
Diante desse cenário de ja possuo algumas aplicações clientes para consumirem esses serviços,
porém os serviços estão totalmente abertos, ou seja, senha nenhuma autenticação e autorização.
Andei pensando em algumas API's como a do twitter, a google, entres outras, também li um pouco sobre OAuth,
mas ainda sim gostaria de saber opinião de vocês em relação a fazer e como fazer autotização e autenticação de API's, e quem já passou por isso qual a solução utilizada.
Abraços.
|
O conhecimento está a onde nós olhamos com vontade de aprender! |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/01/2010 17:32:52
|
mochuara
GUJ Master
Membro desde: 20/05/2009 11:21:32
Mensagens: 1776
Offline
|
Não tem muito a ver com REST, a não ser que vc passe usar cookies, violando assim a restrição de stateless. No mais basta procurar por autenticação via HTTP.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/01/2010 17:41:14
|
diguix
JavaChild
![[Avatar]](/images/avatar/16ad66b2d7d7eda19f34e2f6197e2236.jpg)
Membro desde: 27/08/2006 19:53:29
Mensagens: 142
Localização: RJ/Rio de Janeiro
Offline
|
É isso ai.. procurar sobre autenticação HTTP foi o que fiz:
...Andei pensando em algumas API's como a do twitter, a google, entres outras, também li um pouco sobre OAuth, ...
Estou querendo é saber opinião de quem já fez, já estudou, tem sugestão, para poder discutir um pouco sobre,
REST foi so o modelo de serviços que eu implementei como disse no início.
Abraços, valeu.
|
O conhecimento está a onde nós olhamos com vontade de aprender! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/01/2010 18:03:44
|
mochuara
GUJ Master
Membro desde: 20/05/2009 11:21:32
Mensagens: 1776
Offline
|
diguix wrote:É isso ai.. procurar sobre autenticação HTTP foi o que fiz:
...Andei pensando em algumas API's como a do twitter, a google, entres outras, também li um pouco sobre OAuth, ...
Estou querendo é saber opinião de quem já fez, já estudou, tem sugestão, para poder discutir um pouco sobre,
REST foi so o modelo de serviços que eu implementei como disse no início.
Abraços, valeu.
Ainda não precisei implementar isso, mas vou precisar em breve.
O que posso dizer é que OAuth só é necessário se vc precisa fazer com que outros sistemas acessem dados dos seus usuários, sem fazer com que seus usuários informem login e senha para o concorrente.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/02/2011 10:51:52
|
eldontc
What is classpath?
![[Avatar]](/images/avatar/8eecae92aad27337528c9599afa30948.jpg)
Membro desde: 01/02/2011 09:30:35
Mensagens: 6
Localização: Brasília
Offline
|
Após um ano, estou com a mesma dúvida do @mochuara. Também dei uma olhada no oAuth, mas me pareceu que o forte dele é autenticação e autorização entre sites, em favor de um usuário. Também li que uma versão 2.0 do oAuth está a caminho e será totalmente diferente da anterior. A dúvida continua, qual a melhor forma de implementar autenticação e autorização no consumo de serviços Rest. Estou usando Spring 3.0.5. Também li sobre Spring Security, mas não fiquei muito satisfeito com ele. Me pareceu bastante complexo e parece não ter nada específico para proteção de serviços implementados com Rest. Devido a natureza stateless do Rest, fica a dúvida, como proteger serviços Rest? As implementações de segurança sob HTTP (Basic e Digest) seriam a solução? Temos os problema do http://en.wikipedia.org/wiki/Man-in-the-middle_attack .
links que já pesquisei:
http://broadcast.oreilly.com/2009/12/principles-for-standardized-rest-authentication.html
http://architects.dzone.com/news/rest-and-http-digest
http://thewalter.net/stef/software/httpauth/
http://hueniverse.com/oauth/
Enfim, quem está desenvolvendo aplicações que oferecem acesso a serviços via Rest, como vocês estão tratando a questão de autenticação e autorização para usuários finais da aplicação. Não estou falando de uso de Rest por outras aplicações, onde o sofisticado oAuth resolve a questão, mas sim dos usuários finais da aplicação.
Qualquer ajuda será bem-vinda! Saúde galera!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/09/2011 10:17:18
|
AUser
GUJ Master
![[Avatar]](/images/avatar/ed3b5b6f006e79c5a2f0fff4b91c94cd.jpg)
Membro desde: 23/10/2008 06:39:07
Mensagens: 1092
Offline
|
Galera,
Andei pesquisando sobre essa questao, e achei esse artigo muito interessante:
http://www.artima.com/weblogs/viewpost.jsp?thread=155252
[]'s
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/09/2011 10:28:57
|
sergiom
JavaChild
Membro desde: 26/02/2009 10:12:33
Mensagens: 101
Localização: Sapiranga - RS
Offline
|
O google por exemplo usa uma assinatura, que deve ser passada na requisição.
http://code.google.com/intl/pt-BR/apis/maps/documentation/webservices/index.html#URLSigning
Exemplo:
http://code.google.com/intl/pt-BR/apis/maps/documentation/places/
|
Att,
Sérgio Michels |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/09/2011 14:18:29
|
Leozin
JWizard
![[Avatar]](/images/avatar/5dca4c6b9e244d24a30b4c45601d9720.png)
Membro desde: 18/06/2005 21:01:26
Mensagens: 2310
Localização: São Paulo/SP
Offline
|
E um token SAML não seria legal?
|
http://www.leozin.com.br/blog |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/09/2011 15:51:11
|
AUser
GUJ Master
![[Avatar]](/images/avatar/ed3b5b6f006e79c5a2f0fff4b91c94cd.jpg)
Membro desde: 23/10/2008 06:39:07
Mensagens: 1092
Offline
|
Mas o token não ia resolver a questão de authorization... É isso que não entendo em REST, como funciona a questão de Authorization?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/09/2011 17:53:41
|
eldontc
What is classpath?
![[Avatar]](/images/avatar/8eecae92aad27337528c9599afa30948.jpg)
Membro desde: 01/02/2011 09:30:35
Mensagens: 6
Localização: Brasília
Offline
|
Uma ideia para resolver a authorization é enviar a identifcação do user "dentro" do token, via https, é claro.
Com isso, um Filter poderia verificar se aquele usuário pertence a uma ROLE que permite a execução do serviço REST.
No cenário acima, o usuário se autenticaria em uma tela de login, por exemplo, informando seu principal (username) e credencials (password). Se a autenticação é bem sucedida, um token de liberação (alguns chamam de ticket) é enviado ao cliente e neste token existem informações de tempo de validade, como se fosse um controle de sessão, ou seja, por quanto tempo a autenticação que o usuário fez vale até o próximo request. Nos próximos requests a coisa se repete, ou seja, um token é enviado novamente ao cliente "renovando" o tempo de validação da autenticação. Lembrando que todos os requests são intercepatados pelo Filter e a verificação do user que está no token é feita em relação as roles do usuário. A vantagem é que a caracterísitca stateless do REST é mantida, sem criação de http session.
A ideia acima resolveria autenticação e autoriazação. o que acham?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/09/2011 11:58:53
|
Leozin
JWizard
![[Avatar]](/images/avatar/5dca4c6b9e244d24a30b4c45601d9720.png)
Membro desde: 18/06/2005 21:01:26
Mensagens: 2310
Localização: São Paulo/SP
Offline
|
AUser wrote:Mas o token não ia resolver a questão de authorization... É isso que não entendo em REST, como funciona a questão de Authorization?
foi mal, é que eu só lí o título do tópico e achava que era só autenticação
a autorização poderia ser feita em código mesmo, não valeria a pena?
ou no caso do Java, colocar uma anotação nos métodos REST com Spring para dar um security exception caso o cara não tenha autorização
|
http://www.leozin.com.br/blog |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/09/2011 12:29:15
|
AUser
GUJ Master
![[Avatar]](/images/avatar/ed3b5b6f006e79c5a2f0fff4b91c94cd.jpg)
Membro desde: 23/10/2008 06:39:07
Mensagens: 1092
Offline
|
Pois é, mas pelo que entendo, em RESTful não há controle de sessão, tudo ia ser feito por cookies no cliente. Aí eu te pergunto novamente: como fazemos essa autorização? Esse é um dos pontos que não entendo em REST...
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/09/2011 14:17:30
|
Giulliano
GUJ Master
![[Avatar]](/images/avatar/7f5a17b792b687fc4c227a5c5e569dd8.jpg)
Membro desde: 14/11/2006 19:29:38
Mensagens: 1627
Localização: São Paulo
Offline
|
AUser wrote:Pois é, mas pelo que entendo, em RESTful não há controle de sessão, tudo ia ser feito por cookies no cliente. Aí eu te pergunto novamente: como fazemos essa autorização? Esse é um dos pontos que não entendo em REST...
Olha só...toda interação entre um cliente e um servidor web é "stateless". Tudo é feito através de um "request" e um "response", não existe o conceito de manter estado. Daí surgiu o "cookie" que serve para armazenar informações em um arquivo, afim de evitar que se pergunte a cada requisição a mesma informação.
Onde eu quero chegar com isso? Independente do seu design ser RestFul ou não, o protocolo HTTP funciona assim. Ou você armazena isso em algum lugar ou não armazena. Este conceito de que não existe controle de estado no Rest, é conceitual, acredito que quando foi idealizado, não se levou em consideração a necessidade de autenticação e autorização.
|
Oracle Certified Master, Java EE 5 Enterprise Architect
Oracle Certified Professional Java Programmer
GiuLLianO MoRRoNi
<UnTouChAbLe> |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/09/2011 14:50:27
|
FernandoFranzini
GUJ Master
![[Avatar]](/images/avatar/33f6c40df1060aa3c548ad2d499eced0.jpg)
Membro desde: 24/04/2009 12:58:16
Mensagens: 1541
Offline
|
Seguindo a filosofia do REST de não usar sessão, vc tem 2 formas
1) Usar HTTP BASIC com HTTPS
2) Enviar credenciais dentro do header do HTTP, fazendo autenticação a cada chamada.
Furando a filosofia do REST
1)usando session mesmo da mesma forma que os aplicativos web - na primeira requisição autentica e nas próximas envia o cookies com sessionid.
Não existe problemas nenhum em fazer isso pelo justo fato das limitações do protocolo HTTP.
Podermos esperar uma nova especificação do HTTP logo logo da mesma forma do HTML 5...demoro mas veio!
T+
This message was edited 2 times. Last update was at 14/09/2011 14:51:38
|
Fernando Franzini |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/09/2011 11:33:09
|
moscoso.dev
Debugger
Membro desde: 06/07/2011 07:03:19
Mensagens: 66
Offline
|
Giulliano wrote:
Olha só...toda interação entre um cliente e um servidor web é "stateless". Tudo é feito através de um "request" e um "response", não existe o conceito de manter estado. Daí surgiu o "cookie" que serve para armazenar informações em um arquivo, afim de evitar que se pergunte a cada requisição a mesma informação.
Onde eu quero chegar com isso? Independente do seu design ser RestFul ou não, o protocolo HTTP funciona assim. Ou você armazena isso em algum lugar ou não armazena. Este conceito de que não existe controle de estado no Rest, é conceitual, acredito que quando foi idealizado, não se levou em consideração a necessidade de autenticação e autorização.
É possível e bastante comum manter estado no REST. Só não usa cookies.
This message was edited 1 time. Last update was at 17/09/2011 11:45:20
|
|
|
 |
|
|