OAuth2 é um protocolo que permite aplicações acessarem APIs de forma segura no lugar do usuário. Ele centraliza a autenticação e define papéis claros como proprietário do recurso, servidor de recursos, cliente e servidor de autorização. Os fluxos de autorização como código de autorização, implícito e credenciais do cliente permitem que aplicações obtenham tokens de acesso de forma segura para acessar APIs protegidas.
4. 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
9. Como manter a confidencialidade?
• Soluções proprietárias
o Google AuthSub,
o Yahoo BB Auth
o AOL Open Auth
o FlickrAuth
o . . .
• Muitos protocolos -> developers ==
11. Características
• Centralização e padronização
o Identity Management
o Autenticação
• Papéis bem definidos:
o Resource Owner
o Resource Server
o Client
o Authorization Server
• Access Token / Refresh Token
• HTTPS
12. De forma resumida...
Cliente acessa um recurso utilizando um Access Token.
Access token é obtido com fluxos de autorização do OAuth2.
14. Mas e se eu precisar de uma solução própria ou para
minha empresa?
15.
16. 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)
25. 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/fFBGRNJru1F
Qd44Az
26. 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
27. Porém…
Uma camada a mais na arquitetura ==
Brechas de segurança se mal implementado
overhead
+requests +delay
28. Mas quem está usando?
Facebook
Google
Twitter
Linkedin
PayPal
Dropbox
Wordpress
Microsoft Live
. . .
29. Mãos a obra !
Aplicação cliente para testar o fluxo
o Servidor de autorização bem estabelecido
o Google e Facebook
o Acessar API protegida do Google no lugar do usuário
o Usuário utiliza sua conta do Google para login
o Usuário dá permissão para minha aplicação
o Aplicação NÃO tem acesso as credenciais do usuário
o Trocar Google por Facebook para ver se o protocolo é respeitado
32. 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/