Pergunta

O outro minuto eu li um artigo sobre OAuth. É descrito especialmente os tokens sendo trocados entre o cliente eo provedor de serviço durante uma série de pedidos.

O artigo também mencionou que OAuth ganha popularidade significativa no APIs RESTful como camada de autorização. Como eu entendi, REST deve ser mantido completamente sem estado.

A pergunta: Isso não troca simbólica repetida torpedo princípio do repouso "sendo apátrida"? IMHO os tokens pode ser visto como uma espécie de ID da sessão, eles não podem?

Foi útil?

Solução

OAuth fichas são explicitamente um identificador de sessão, a interação não apátrida é entre os pedidos do protocolo de negociação de token OAuth como os pedidos devem ser executadas em uma seqüência específica, e eles necessitam de armazenamento por cliente no servidor que for necessário para a faixa coisas como quando foram emitidas. Então, sim, OAuth viola os rigorosos princípios de uma arquitetura RESTful.

Infelizmente não é o mundo real TM para lidar com onde nós precisamos de fazer coisas como permitir que os aplicativos para autenticar em nome de indivíduos sem pedir a sua senha, que OAuth faz muito bem. Seria impossível implementar um esquema de autenticação semelhante seguro sem este tipo de estado. De fato, uma das mudanças exigidas pelo OAuth (1.0a) foi adicionar mais estado para o protocolo de negociação token para mitigar um risco de segurança.

Então, isso torpedo princípio apátrida do resto? Sim. Isso importa? Não a menos que você vive em uma torre de marfim: -)

Outras dicas

A autenticação é um estado que deve ser monitorado de alguma forma quando se trata de interações web. Em última análise, se o seu aplicativo é repousante ou não, o servidor deve ser capaz de controlar cada usuário "autenticados Estado" e, infelizmente, que requer algum tipo de fraude à natureza sem estado subjacente de HTTP e quaisquer transportes adicionais / técnicas (como REST) ??em cima do isto.

Assim, para desenvolver qualquer tipo de aplicativo autenticado, um princípio de Estado deve ser sapato chifres em algum lugar, e se isso acontece a ser OAuth no topo do REST, que é como ele deve ser!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top