Post on 11-Apr-2017
transcript
O que é JWT?
JSON Web Token
É um padrão aberto de transmissão de dados com uma assinatura digital que garante a autenticidade do emissor.
O que é JWT?
Pra que JWT?
● Autenticação○ Stateless○ Stateful○ Misto
● Transmissão de dados○ Garantia de conteúdo○ Garantia de emissor○ Compactação de dados
1. Header
○ Algoritmo: RSA, HS256
2. Payload
○ JSON
○ Claims: iss, exp, sub
3. Encrypted signature
○ Algoritmo (base64 (cabeçalho) + “.” +base64 (corpo),segredo)
Anatomia do JWT
* http://jwt.io
JWT ou a boa e velha sessão?
A diferença fundamental está navalidação da autorização:
● JWT: o token garante a autenticidade, o servidor confia e vamos ao que interessa!
● Sessão: o cookie informa qual sessão de usuário deve ser verificada - na memória ou no banco de dados - e só então continua.
Session vs Token(JWT)
* https://auth0.com/blog/cookies-vs-tokens-definitive-guide
Problemas de sessão
● Escalabilidade
● Bancos de dados
● Complexidade ao lidar com diferentes meios
● Não se aplica a transmissões de dados seguras
Problemas de JWT
● Implementações falhas
● Tokens sem expiration date (!)
● Irreprimível se for stateless
● Inócuo se for full stateful
● Armazenamento inseguro
Referências
● JSON Web Token (JWT) RFC
http://webconcepts.info/specs/IETF/RFC/7519
● JSON Web Token Claims
http://webconcepts.info/concepts/jwt-claim/
● Cookies vs Tokens: The Definitive Guide
https://auth0.com/blog/cookies-vs-tokens-definitive-guide
● Stop using JWT for sessions
http://cryto.net/~joepie91/blog/2016/06/13/stop-using-jwt-for-sessions/
● Stop using JWT for sessions, part 2: Why your solution doesn't work
http://cryto.net/~joepie91/blog/2016/06/19/stop-using-jwt-for-sessions-part-2-why-your-solution-doesnt-work/
Referências
● Does JWT put your web app at risk?
http://blog.prevoty.com/does-jwt-put-your-web-app-at-risk
● JWT, JWS and JWE for Not So Dummies!
https://medium.facilelogin.com/jwt-jws-and-jwe-for-not-so-dummies-b63310d201a3#.8g0z8tjmh
Referências
www.concretesolutions.com.br
Ajudamos empresas a criar produtos digitais de sucesso
Belo Horizonte - Av. Getúlio Vargas, 671 8º andar, sala 800 - Savassi - (31) 3360-8900
Rio de Janeiro - Rua São José, 90 - cj. 2121Centro - (21) 2240-2030
São Paulo - Av. Nações Unidas, 11.5413º andar - Brooklin - (11) 4119-0449