OAuth 2.0 e OpenID Connect
WILLIAM
CALDERIPE
wcalderipe.com
Backend Developer na
Conrad Caine
Proprietário dos Recursos (PR)
Cliente
Servidor de Autorização (SA)
Servidor de Recursos (SR)
Conhecendo os 4 atores do OAuth
Proprietário dos Recursos (PR)
Cliente
Servidor de Autorização (SA)
Servidor de Recursos (SR)
O Cliente pede acesso ao SA
Proprietário dos Recursos (PR)
Cliente
Servidor de Autorização (SA)
Servidor de Recursos (SR)
O SA pede para o PR se autenticar
Proprietário dos Recursos (PR)
Cliente
Servidor de Autorização (SA)
Servidor de Recursos (SR)
O SA retorna um access token
Access Token (AT)
Proprietário dos Recursos (PR)
Cliente
Servidor de Autorização (SA)
Servidor de Recursos (SR)
O Cliente usa o AT para acessar os dados do PR
no SR
Access Token (AT)
Proprietário dos Recursos (PR)
Cliente
Servidor de Autorização (SA)
Servidor de Recursos (SR)
O SR checa se o AT é válido
Access Token (AT)
Proprietário dos Recursos (PR)
Cliente
Servidor de Autorização (SA)
Servidor de Recursos (SR)
O SR retorna os dados do PR para o cliente
O cliente não sabe nada
sobre o usuário
(SIMPLIFICADO)
Quem é o usuário que se autenticou
Onde
Quando
Como
Quais
Porque
onde ele se autenticou
ele se autenticou
ele se autenticou
atributos ele deu permissão
ele está dando acesso
Cliente Servidor de Autorização (SA)
Servidor de Recursos (SR)
foo-mail.com
Sessions
Proprietário dos Recursos (PR)
O cliente pede acesso para o SA
Cliente Servidor de Autorização (SA)
Servidor de Recursos (SR)
foo-mail.com
Sessions
Proprietário dos Recursos (PR)
O SA pede para o PR dar autorização para o
Cliente
Cliente Servidor de Autorização (SA)
Servidor de Recursos (SR)
foo-mail.com
Sessions
Proprietário dos Recursos (PR)
O SA retorna um Access Token e um ID Token
ID Token (IT) and Access Token (AT)
Client Servidor de Autorização (SA)
Servidor de Recursos (SR)
foo-mail.com
Sessions
Proprietário dos Recursos (PR)
O Cliente usa o AT para acessar os dados do PR
no SR
Access Token (AT)
Client Servidor de Autorização (SA)
Servidor de Recursos (SR)
foo-mail.com
Sessions
Proprietário dos Recursos (PR)
O SR checa se o AT é válido
Access Token (AT)
Cliente Servidor de Autorização (SA)
Servidor de Recursos (SR)
foo-mail.com
Sessions
Proprietário dos Recursos (PR)
O SR retorna os dados do PR para o cliente
Tá, e qual a moral disso?
Confiança
E quando ele expirar como
eu faço pra renovar?
O ID token é um JWT
( JSON Web Token )
Documento JSON assinado
{
"iss": "https://auth.awesome-app.com",
"typ": "JWT",
"alg": "RS256"
},
{
"username": "jsmith",
"name": "John Smith",
"email": "jsmith@mail.com",
"aud": "https://foo-mail.com",
"iss": "https://auth.awesome-app.com",
"nbf": 56360928133425594,
"jti": "JmzLVuRyAr-XAPw-tPey-I6Z0-hUugY8BG6r",
"exp": 9068550373,
"iat": 4456772927
}
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJleHAiOjEzODY4OTkxMzEsImlzcyI6Imp
pcmE6MTU0ODk1OTUiLCJxc2giOiI4MDY
zZmY0Y2ExZTQxZGY3YmM5MGM4YWI2
ZDBmNjIwN2Q0OTFjZjZkYWQ3YzY2ZWE
3OTdiNDYxNGI3MTkyMmU5IiwiaWF0Ijo
xMzg2ODk4OTUxfQ.
uKqU9dTB6gKwG6jQCuXYAiMNdfNRw98
Hw_IWuA5MaMo
2 tipos de tokens
hUugY8BG6r
John Smith
Valor Referência
Token de Valores
Possuí toda a informação necessária
Token de Referência
hUugY8BG6r
John Smith
Não possuí informação fora do ecossistema
Tá, mas onde isso tudo é
usado?
Play with it!
https://developers.google.com/oauthplayground
wcalderipe.com
OBRIGADO
Perguntas?

OAuth 2.0 e OpenID Connect

  • 1.
    OAuth 2.0 eOpenID Connect
  • 2.
  • 4.
    Proprietário dos Recursos(PR) Cliente Servidor de Autorização (SA) Servidor de Recursos (SR) Conhecendo os 4 atores do OAuth
  • 5.
    Proprietário dos Recursos(PR) Cliente Servidor de Autorização (SA) Servidor de Recursos (SR) O Cliente pede acesso ao SA
  • 6.
    Proprietário dos Recursos(PR) Cliente Servidor de Autorização (SA) Servidor de Recursos (SR) O SA pede para o PR se autenticar
  • 7.
    Proprietário dos Recursos(PR) Cliente Servidor de Autorização (SA) Servidor de Recursos (SR) O SA retorna um access token Access Token (AT)
  • 8.
    Proprietário dos Recursos(PR) Cliente Servidor de Autorização (SA) Servidor de Recursos (SR) O Cliente usa o AT para acessar os dados do PR no SR Access Token (AT)
  • 9.
    Proprietário dos Recursos(PR) Cliente Servidor de Autorização (SA) Servidor de Recursos (SR) O SR checa se o AT é válido Access Token (AT)
  • 10.
    Proprietário dos Recursos(PR) Cliente Servidor de Autorização (SA) Servidor de Recursos (SR) O SR retorna os dados do PR para o cliente
  • 11.
    O cliente nãosabe nada sobre o usuário
  • 12.
  • 13.
    Quem é ousuário que se autenticou Onde Quando Como Quais Porque onde ele se autenticou ele se autenticou ele se autenticou atributos ele deu permissão ele está dando acesso
  • 14.
    Cliente Servidor deAutorização (SA) Servidor de Recursos (SR) foo-mail.com Sessions Proprietário dos Recursos (PR) O cliente pede acesso para o SA
  • 15.
    Cliente Servidor deAutorização (SA) Servidor de Recursos (SR) foo-mail.com Sessions Proprietário dos Recursos (PR) O SA pede para o PR dar autorização para o Cliente
  • 16.
    Cliente Servidor deAutorização (SA) Servidor de Recursos (SR) foo-mail.com Sessions Proprietário dos Recursos (PR) O SA retorna um Access Token e um ID Token ID Token (IT) and Access Token (AT)
  • 17.
    Client Servidor deAutorização (SA) Servidor de Recursos (SR) foo-mail.com Sessions Proprietário dos Recursos (PR) O Cliente usa o AT para acessar os dados do PR no SR Access Token (AT)
  • 18.
    Client Servidor deAutorização (SA) Servidor de Recursos (SR) foo-mail.com Sessions Proprietário dos Recursos (PR) O SR checa se o AT é válido Access Token (AT)
  • 19.
    Cliente Servidor deAutorização (SA) Servidor de Recursos (SR) foo-mail.com Sessions Proprietário dos Recursos (PR) O SR retorna os dados do PR para o cliente
  • 20.
    Tá, e quala moral disso?
  • 21.
  • 22.
    E quando eleexpirar como eu faço pra renovar?
  • 23.
    O ID tokené um JWT ( JSON Web Token )
  • 24.
    Documento JSON assinado { "iss":"https://auth.awesome-app.com", "typ": "JWT", "alg": "RS256" }, { "username": "jsmith", "name": "John Smith", "email": "jsmith@mail.com", "aud": "https://foo-mail.com", "iss": "https://auth.awesome-app.com", "nbf": 56360928133425594, "jti": "JmzLVuRyAr-XAPw-tPey-I6Z0-hUugY8BG6r", "exp": 9068550373, "iat": 4456772927 } eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9. eyJleHAiOjEzODY4OTkxMzEsImlzcyI6Imp pcmE6MTU0ODk1OTUiLCJxc2giOiI4MDY zZmY0Y2ExZTQxZGY3YmM5MGM4YWI2 ZDBmNjIwN2Q0OTFjZjZkYWQ3YzY2ZWE 3OTdiNDYxNGI3MTkyMmU5IiwiaWF0Ijo xMzg2ODk4OTUxfQ. uKqU9dTB6gKwG6jQCuXYAiMNdfNRw98 Hw_IWuA5MaMo
  • 25.
    2 tipos detokens hUugY8BG6r John Smith Valor Referência
  • 26.
    Token de Valores Possuítoda a informação necessária
  • 27.
    Token de Referência hUugY8BG6r JohnSmith Não possuí informação fora do ecossistema
  • 28.
    Tá, mas ondeisso tudo é usado?
  • 30.
  • 31.