O uso de sessões em uma API RESTful realmente viola o RESTfulness? Tenho visto muitas opiniões indo em qualquer direção, mas não estou convencido de que as sessões sejam RESTless . Do meu ponto de vista:
- a autenticação não é proibida para RESTfulness (caso contrário, haveria pouco uso nos serviços RESTful)
- a autenticação é feita enviando um token de autenticação na solicitação, geralmente o cabeçalho
- esse token de autenticação precisa ser obtido de alguma forma e pode ser revogado; nesse caso, ele precisa ser renovado
- o token de autenticação precisa ser validado pelo servidor (caso contrário, não seria autenticação)
Então, como as sessões violam isso?
- do lado do cliente, as sessões são realizadas usando cookies
- cookies são simplesmente um cabeçalho HTTP extra
- um cookie de sessão pode ser obtido e revogado a qualquer momento
- os cookies de sessão podem ter uma vida útil infinita, se necessário
- o ID da sessão (token de autenticação) é validado no servidor
Como tal, para o cliente, um cookie de sessão é exatamente o mesmo que qualquer outro mecanismo de autenticação baseado em cabeçalho HTTP, exceto pelo uso do Cookie
cabeçalho em vez do Authorization
cabeçalho proprietário ou de algum outro cabeçalho proprietário. Se não havia nenhuma sessão anexada ao valor do cookie do lado do servidor, por que isso faria diferença? A implementação do lado do servidor não precisa preocupar o cliente, desde que o servidor se comporte com RESTful. Como tal, os cookies por si só não devem tornar uma API RESTless , e as sessões são simplesmente cookies para o cliente.
Minhas suposições estão erradas? O que torna os cookies de sessão RESTless ?