33
JSON WEB TOKEN

Autenticação com Json Web Token (JWT)

Embed Size (px)

Citation preview

Page 1: Autenticação com Json Web Token (JWT)

JSON WEB TOKEN

Page 2: Autenticação com Json Web Token (JWT)

Ivan RosolenGraduado em Sistemas de InformaçãoPós-graduado em Gerência de Projetos

Desenvolvedor a 15+ anosAutor de vários PHPT (testes para o PHP)

Entusiasta de novas tecnologias

Head of Innovation @ Arizona

CTO @ Mokation

Page 3: Autenticação com Json Web Token (JWT)

@ivanrosolen

Page 4: Autenticação com Json Web Token (JWT)

Authentication

Page 5: Autenticação com Json Web Token (JWT)

- Form Request Post/Get

- OAuth

- Key/Hash

- Credenciais em plain text

- Session Cookies

Page 6: Autenticação com Json Web Token (JWT)

- Data is stored in plain text on the server

- Filesystem read/write requests

- Distributed/clustered applications

- Redis/Sticky sessions

Page 7: Autenticação com Json Web Token (JWT)

API

Page 8: Autenticação com Json Web Token (JWT)

- Stateless authentication (simplifies horizontal scaling)

- Prevent (mitigate) Cross-Site Request Forgery (CSRF)

attacks.

- Security (https)

- Authorization: Bearer

Page 9: Autenticação com Json Web Token (JWT)

- Authentication vs. Authorization

- 401 unauthorized / 403 forbidden

- JWT != ACL

Page 10: Autenticação com Json Web Token (JWT)

JOSE

Page 11: Autenticação com Json Web Token (JWT)

- JWT

- JWS

- JWA

- JWK

- JWE

JSON Object Signing and Encryption

Page 12: Autenticação com Json Web Token (JWT)

Advantages

Page 13: Autenticação com Json Web Token (JWT)

- JSON Web Tokens work across different programming languages

- JWTs are self-contained

- JWTs can be passed around easily and secure

- Better control like “one time token” to forgot password, confirm

user, request rates, access, etc.

- One token to rule them all (Stateless)

Page 14: Autenticação com Json Web Token (JWT)

Anatomy

Page 15: Autenticação com Json Web Token (JWT)

header.claims.signature

Page 16: Autenticação com Json Web Token (JWT)

Header

{

"typ": "JWT",

"alg": "HS256"

}

Page 17: Autenticação com Json Web Token (JWT)

Claims- iss: The issuer of the token

- sub: The subject of the token

- aud: The audience of the token

- exp: This will probably be the registered claim most often used. This will define the expiration

in NumericDate value. The expiration MUST be after the current date/time.

- nbf: Defines the time before which the JWT MUST NOT be accepted for processing

- iat: The time the JWT was issued. Can be used to determine the age of the JWT

- jti: Unique identifier for the JWT. Can be used to prevent the JWT from being replayed. This is

helpful for a one time use token.

http://www.slideshare.net/lcobucci/jwt-to-authentication-and-beyond

Page 18: Autenticação com Json Web Token (JWT)

Payload / Claims{

"iss": "ivanrosolen.com",

"exp": 1300819380,

"name": "Ivan Rosolen",

"admin": true

}

Page 19: Autenticação com Json Web Token (JWT)

JWT

eyJ0eXAiOiAiSldUIiwiYWxnIjogIkhTMjU2In0=.eyJpc3MiOiAiaXZhbnJvc29sZW4uY29tIiwiZXhwIjogMTMwMDgxOTM4MCwibmFtZSI6ICJJdmFuIFJvc29sZW4iLCJhZG1pbiI6IHRydWV9.

Page 20: Autenticação com Json Web Token (JWT)

JWS

- header

- claims

payload

base64(header) . base64(claims)

Page 21: Autenticação com Json Web Token (JWT)

JWA

- secret (hmac sha256, rsa256 ....)

- encrypt payload with key ‘Xuplau’

Page 22: Autenticação com Json Web Token (JWT)

Signature

var encodedString = base64UrlEncode(header) + "."

+ base64UrlEncode(payload);

HMACSHA256(encodedString, 'Xuplau');

Page 23: Autenticação com Json Web Token (JWT)

JWT

eyJ0eXAiOiAiSldUIiwiYWxnIjogIkhTMjU2In0=.eyJpc3MiOiAiaXZhbnJvc29sZW4uY29tIiwiZXhwIjogMTMwMDgxOTM4MCwibmFtZSI6ICJJdmFuIFJvc29sZW4iLCJhZG1pbiI6IHRydWV9.M2FjZTM0M2ZiNjhhMzBiOWNiYTkxN2U1Zjk4YjUxOWYzMTY3NGZlMmU4MTIzYjU1NTRkMjNlNjYzOTkyZGU2Nw==

Page 24: Autenticação com Json Web Token (JWT)

Warning!

Page 25: Autenticação com Json Web Token (JWT)

Code

Page 26: Autenticação com Json Web Token (JWT)
Page 27: Autenticação com Json Web Token (JWT)
Page 28: Autenticação com Json Web Token (JWT)

Github

- Session

- JWT

- JOSE

Page 29: Autenticação com Json Web Token (JWT)

DEMO

Page 30: Autenticação com Json Web Token (JWT)

Refs

Page 32: Autenticação com Json Web Token (JWT)

????

Page 33: Autenticação com Json Web Token (JWT)

OBRIGADO!

Visite phpsp.org.br