Autenticação baseada em token versus cookie | Pablo Souza
5 de May de 2016 pablodss@gmail.com
Benefícios de uma autenticação baseada em token
Cross-domain / CORS: Cookies não trabalham bem com CORS (Cross-origin resource sharing). Uma estratégia baseada em token permite fazer chamadas AJAX para qualquer servidor, em qualquer domínio porque você usará o header HTTP para transmitir a informação do usuário.
Stateless: Sinônimo de escalabilidade do lado servidor. Não há necessidade de manter sessão em memória, uma vez que o token carrega consigo toda a informação do usuário necessária para fazer uma requisição ao servidor.
CDN: Você pode distribuir todos os seus assets através de um CDN, ou seja, todo conteúdo JavaScript, HTML, imagens, etc. Dessa forma seu servidor funcionará apenas como uma API.
Desacoplamento: Você não precisa ficar engessado a um esquema de autenticação porque o token pode ser gerado de qualquer lugar, de qualquer aplicação. Pode ser utilizado um STS(Security Token Service) por exemplo.
Mobile: Uma autenticação baseada em token já nasce preparada para aplicações mobile. Quando desenvolvendo aplicações mobile nativas (Android, iOS, Windows Mobile, etc.), autenticação baseada em cookie não se torna a melhor opção para consumir APIs seguras. Adotar uma estratégia baseada em token simplifica demais todo o processo de desenvolvimento.
CSRF: Uma vez que você não utilizará cookies, você não precisará se proteger contra ataques do tipo CSRF (Cross-site request forgery).
Performance: Utilizando as técnicas abordados acima, seu servidor passará a receber muito menos requisições, devido ao uso de CDN, bem como não precisará necessariamente consultar sessões em um banco de dados a cada requisição, passando a apenas validar a fazer parse do conteúdo de um token.