oauth2: uma abordagem para segurança de aplicações e apis rest - devcamp 2014
DESCRIPTION
Slides da palestra apresentada no evento Devcamp 2014, em 17/05/2014, Campinas - SP.TRANSCRIPT
![Page 1: OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014](https://reader033.vdocuments.net/reader033/viewer/2022061609/558570edd8b42a4c2c8b4a9b/html5/thumbnails/1.jpg)
OAuth2
Uma abordagem para segurança de aplicações e APIs REST
![Page 3: OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014](https://reader033.vdocuments.net/reader033/viewer/2022061609/558570edd8b42a4c2c8b4a9b/html5/thumbnails/3.jpg)
Agenda
• Overview• Características• Fluxos• Conclusões• Exemplo
![Page 4: OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014](https://reader033.vdocuments.net/reader033/viewer/2022061609/558570edd8b42a4c2c8b4a9b/html5/thumbnails/4.jpg)
Overview
• Crescimento dos sistemas -> maior nº de componentes
• Arquiteturas cada vez mais distribuídas
• Web, mobile, desktop, serviços…
• Plataformas colaborativas
• Interação com diversas APIs externas
• Usuário com múltiplas contas e logins
![Page 5: OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014](https://reader033.vdocuments.net/reader033/viewer/2022061609/558570edd8b42a4c2c8b4a9b/html5/thumbnails/5.jpg)
Exemplo de um cenário atual
![Page 6: OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014](https://reader033.vdocuments.net/reader033/viewer/2022061609/558570edd8b42a4c2c8b4a9b/html5/thumbnails/6.jpg)
Como solucionar?
![Page 7: OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014](https://reader033.vdocuments.net/reader033/viewer/2022061609/558570edd8b42a4c2c8b4a9b/html5/thumbnails/7.jpg)
Armazenar credenciais do usuário?
![Page 8: OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014](https://reader033.vdocuments.net/reader033/viewer/2022061609/558570edd8b42a4c2c8b4a9b/html5/thumbnails/8.jpg)
Armazenar credenciais do usuário?
![Page 9: OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014](https://reader033.vdocuments.net/reader033/viewer/2022061609/558570edd8b42a4c2c8b4a9b/html5/thumbnails/9.jpg)
Como manter a confidencialidade?
• Soluções proprietáriaso Google AuthSub,o Yahoo BB Autho AOL Open Autho FlickrAutho . . .
• Muitos protocolos -> developers ==
![Page 10: OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014](https://reader033.vdocuments.net/reader033/viewer/2022061609/558570edd8b42a4c2c8b4a9b/html5/thumbnails/10.jpg)
OAuth2
Permite uma aplicação acessar uma API no lugar do usuário, de forma segura e padronizada
![Page 11: OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014](https://reader033.vdocuments.net/reader033/viewer/2022061609/558570edd8b42a4c2c8b4a9b/html5/thumbnails/11.jpg)
Características• Centralização e padronização
o Identity Managemento Autenticação
• Papéis bem definidos:o Resource Ownero Resource Servero Cliento Authorization Server
• Access Token / Refresh Token
• HTTPS
![Page 12: OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014](https://reader033.vdocuments.net/reader033/viewer/2022061609/558570edd8b42a4c2c8b4a9b/html5/thumbnails/12.jpg)
De forma resumida...
Cliente acessa um recurso utilizando um Access Token.
Access token é obtido com fluxos de autorização do OAuth2.
![Page 13: OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014](https://reader033.vdocuments.net/reader033/viewer/2022061609/558570edd8b42a4c2c8b4a9b/html5/thumbnails/13.jpg)
Exemplo de arquitetura
![Page 14: OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014](https://reader033.vdocuments.net/reader033/viewer/2022061609/558570edd8b42a4c2c8b4a9b/html5/thumbnails/14.jpg)
Mas e se eu precisar de uma solução própria ou para minha empresa?
![Page 15: OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014](https://reader033.vdocuments.net/reader033/viewer/2022061609/558570edd8b42a4c2c8b4a9b/html5/thumbnails/15.jpg)
![Page 16: OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014](https://reader033.vdocuments.net/reader033/viewer/2022061609/558570edd8b42a4c2c8b4a9b/html5/thumbnails/16.jpg)
Fluxos de autorização
Tipo Quando usar Principal característica
Authorization Code Client é uma aplicação Web ou Nativa
3 legged, pode armazenar secret
Implicit Client é uma aplicação que não pode armazenar secret
Geralmente executado no lado do usuário (javascript no browser, mobile, desktop)
Resource Owner Password Client está sob domínio do Authorization Server
Client tem acesso as credenciais do usuário
Client Credentials Client no papel de Resource Owner
Client armazena secret e não depende do usuário (geralmente é um serviço)
![Page 17: OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014](https://reader033.vdocuments.net/reader033/viewer/2022061609/558570edd8b42a4c2c8b4a9b/html5/thumbnails/17.jpg)
Authorization Code (Aplicações Web)
![Page 18: OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014](https://reader033.vdocuments.net/reader033/viewer/2022061609/558570edd8b42a4c2c8b4a9b/html5/thumbnails/18.jpg)
Authorization Code (Aplicações Web)
client_id id registrado
redirect_uri URI callback
responsetype “code”
scope APIs
state livre
client_id URI callback
client_secret secret registrada
redirect_uri APIs
code id registrado
grant_type “authorization_code”
![Page 19: OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014](https://reader033.vdocuments.net/reader033/viewer/2022061609/558570edd8b42a4c2c8b4a9b/html5/thumbnails/19.jpg)
Implicit
![Page 20: OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014](https://reader033.vdocuments.net/reader033/viewer/2022061609/558570edd8b42a4c2c8b4a9b/html5/thumbnails/20.jpg)
Implicit
client_id id registrado
redirect_uri URI callback
response_type “token”
scope APIs
state livre
![Page 21: OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014](https://reader033.vdocuments.net/reader033/viewer/2022061609/558570edd8b42a4c2c8b4a9b/html5/thumbnails/21.jpg)
Client Credentials (Client == RO)
![Page 22: OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014](https://reader033.vdocuments.net/reader033/viewer/2022061609/558570edd8b42a4c2c8b4a9b/html5/thumbnails/22.jpg)
Client Credentials (Client == RO)
client_id id registrado
client_secret secret registrada
grant_type “client_credentials”
scope APIs
![Page 23: OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014](https://reader033.vdocuments.net/reader033/viewer/2022061609/558570edd8b42a4c2c8b4a9b/html5/thumbnails/23.jpg)
Resource Owner Password
![Page 24: OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014](https://reader033.vdocuments.net/reader033/viewer/2022061609/558570edd8b42a4c2c8b4a9b/html5/thumbnails/24.jpg)
Resource Owner Password
client_id id registrado
client_secret secret registrada
grant_type “password”
username username
password Password
scope APIs
![Page 25: OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014](https://reader033.vdocuments.net/reader033/viewer/2022061609/558570edd8b42a4c2c8b4a9b/html5/thumbnails/25.jpg)
Acesso a um recurso protegido
• GET /plus/v1/people/me HTTP/1.1
Authorization: Bearer 1/fFBGRNJru1FQd44AzqT3Zg
Host: googleapis.com
• GET https://www.googleapis.com/plus/v1/people/{userId}?access_token=1/
fFBGRNJru1FQd44Az
![Page 26: OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014](https://reader033.vdocuments.net/reader033/viewer/2022061609/558570edd8b42a4c2c8b4a9b/html5/thumbnails/26.jpg)
E qual seria a vantagem?
• Flexibilidade
• Independente de implementação
• Deployment diverso (público, privado, corporativo...)
• Interoperabilidade (Web, Android, IOS , Desktop, Server-Server…)
• Utilizar mecanismos que o usuário já confia
• Single Sign-On
• Pode -se trocar de implementação facilmente
![Page 27: OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014](https://reader033.vdocuments.net/reader033/viewer/2022061609/558570edd8b42a4c2c8b4a9b/html5/thumbnails/27.jpg)
Porém…
Uma camada a mais na arquitetura ==
Brechas de segurança se mal implementado
overhead +requests +delay
![Page 28: OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014](https://reader033.vdocuments.net/reader033/viewer/2022061609/558570edd8b42a4c2c8b4a9b/html5/thumbnails/28.jpg)
Mas quem está usando?
PayPal
Dropbox
Wordpress
Microsoft Live
. . .
![Page 29: OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014](https://reader033.vdocuments.net/reader033/viewer/2022061609/558570edd8b42a4c2c8b4a9b/html5/thumbnails/29.jpg)
Mãos a obra !
Aplicação cliente para testar o fluxoo Servidor de autorização bem estabelecido
o Google e Facebooko Acessar API protegida do Google no lugar do usuárioo Usuário utiliza sua conta do Google para logino Usuário dá permissão para minha aplicaçãoo Aplicação NÃO tem acesso as credenciais do usuárioo Trocar Google por Facebook para ver se o protocolo é respeitado
![Page 30: OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014](https://reader033.vdocuments.net/reader033/viewer/2022061609/558570edd8b42a4c2c8b4a9b/html5/thumbnails/30.jpg)
Exemplo de arquitetura
![Page 31: OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014](https://reader033.vdocuments.net/reader033/viewer/2022061609/558570edd8b42a4c2c8b4a9b/html5/thumbnails/31.jpg)
Eclipse
![Page 32: OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014](https://reader033.vdocuments.net/reader033/viewer/2022061609/558570edd8b42a4c2c8b4a9b/html5/thumbnails/32.jpg)
Mais informações• Projeto de exemplo: https://github.com/tiagodolphine/oauth2client
• http://tools.ietf.org/html/rfc6749
• http://oauth.net/2/
• https://developers.google.com/accounts/docs/OAuth2
Getting Started with OAuth 2.0 Programming clients for secure web API authorization and authentication
Crítica
• http://hueniverse.com/2012/07/26/oauth-2-0-and-the-road-to-hell/
![Page 33: OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014](https://reader033.vdocuments.net/reader033/viewer/2022061609/558570edd8b42a4c2c8b4a9b/html5/thumbnails/33.jpg)