SlideShare uma empresa Scribd logo
1 de 34
OAuth2
Uma abordagem para segurança de
aplicações e APIs REST
Tiago Marchetti Dophine
tiagodolphine@gmail.com
@tiagodolphine
Sobre?
Agenda
• Overview
• Características
• Fluxos
• Conclusões
• Exemplo
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
Exemplo de um cenário atual
Como solucionar?
Armazenar credenciais do usuário?
Armazenar credenciais do usuário?
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 ==
OAuth2
Permite uma aplicação acessar uma API no lugar do usuário,
de forma segura e padronizada
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
De forma resumida...
Cliente acessa um recurso utilizando um Access Token.
Access token é obtido com fluxos de autorização do OAuth2.
Exemplo de arquitetura
Mas e se eu precisar de uma solução própria ou para
minha empresa?
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)
Authorization Code (Aplicações Web)
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”
Implicit
Implicit
client_id id registrado
redirect_uri URI callback
response_type “token”
scope APIs
state livre
Client Credentials (Client == RO)
Client Credentials (Client == RO)
client_id id registrado
client_secret secret registrada
grant_type “client_credentials”
scope APIs
Resource Owner Password
Resource Owner Password
client_id id registrado
client_secret secret registrada
grant_type “password”
username username
password Password
scope APIs
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
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
Porém…
Uma camada a mais na arquitetura ==
Brechas de segurança se mal implementado
overhead
+requests +delay
Mas quem está usando?
Facebook
Google
Twitter
Linkedin
PayPal
Dropbox
Wordpress
Microsoft Live
. . .
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
Exemplo de arquitetura
Eclipse
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/
Obrigado !
Tiago Marchetti Dophine
tiagodolphine@gmail.com
@tiagodolphine

Mais conteúdo relacionado

Mais procurados

Conceitos básicos de segurança da informação
Conceitos básicos de segurança da informaçãoConceitos básicos de segurança da informação
Conceitos básicos de segurança da informaçãoCarlos De Carvalho
 
Sistemas operacionais de redes particionamento de discos ii
Sistemas operacionais de redes   particionamento de discos iiSistemas operacionais de redes   particionamento de discos ii
Sistemas operacionais de redes particionamento de discos iiCarlos Melo
 
Treinamento de SQL Básico
Treinamento de SQL BásicoTreinamento de SQL Básico
Treinamento de SQL BásicoIgor Alves
 
Aula 02 - Sistemas, Dados, Informação
Aula 02 - Sistemas, Dados, InformaçãoAula 02 - Sistemas, Dados, Informação
Aula 02 - Sistemas, Dados, InformaçãoDaniel Brandão
 
Fundamentos de sistemas de informação
Fundamentos de sistemas de informaçãoFundamentos de sistemas de informação
Fundamentos de sistemas de informaçãoLeonardo Melo Santos
 
Segurança em banco de dados
Segurança em banco de dadosSegurança em banco de dados
Segurança em banco de dadosArthur Azevedo
 
Aula diagrama de atividade 3º periodo uniao
Aula diagrama de atividade 3º periodo uniaoAula diagrama de atividade 3º periodo uniao
Aula diagrama de atividade 3º periodo uniaoMaria Alice Jovinski
 
Sistema operativo servidor
Sistema operativo servidorSistema operativo servidor
Sistema operativo servidorSandu Postolachi
 
Análise Orientada a Objetos - Objetos E Classes
Análise Orientada a Objetos  -   Objetos E ClassesAnálise Orientada a Objetos  -   Objetos E Classes
Análise Orientada a Objetos - Objetos E ClassesCursoSENAC
 
Segurança da informação
Segurança da informaçãoSegurança da informação
Segurança da informaçãoimsp2000
 
Aula de Analise e Projetos - Diagramas UML - prof. Rudson Kiyoshi S. Carvalho
Aula de Analise e Projetos - Diagramas UML - prof. Rudson Kiyoshi S. CarvalhoAula de Analise e Projetos - Diagramas UML - prof. Rudson Kiyoshi S. Carvalho
Aula de Analise e Projetos - Diagramas UML - prof. Rudson Kiyoshi S. CarvalhoRudson Kiyoshi Souza Carvalho
 

Mais procurados (20)

Banco De Dados
Banco De DadosBanco De Dados
Banco De Dados
 
Conceitos básicos de segurança da informação
Conceitos básicos de segurança da informaçãoConceitos básicos de segurança da informação
Conceitos básicos de segurança da informação
 
Sistemas operacionais de redes particionamento de discos ii
Sistemas operacionais de redes   particionamento de discos iiSistemas operacionais de redes   particionamento de discos ii
Sistemas operacionais de redes particionamento de discos ii
 
PostgreSQL
PostgreSQLPostgreSQL
PostgreSQL
 
Treinamento de SQL Básico
Treinamento de SQL BásicoTreinamento de SQL Básico
Treinamento de SQL Básico
 
Prazer, computação em nuvem
Prazer, computação em nuvemPrazer, computação em nuvem
Prazer, computação em nuvem
 
Aula 2 banco de dados
Aula 2   banco de dadosAula 2   banco de dados
Aula 2 banco de dados
 
Aula 02 - Sistemas, Dados, Informação
Aula 02 - Sistemas, Dados, InformaçãoAula 02 - Sistemas, Dados, Informação
Aula 02 - Sistemas, Dados, Informação
 
Diagrama de Casos de Uso
Diagrama de Casos de UsoDiagrama de Casos de Uso
Diagrama de Casos de Uso
 
Analise e Projeto de Sistemas
Analise e Projeto de SistemasAnalise e Projeto de Sistemas
Analise e Projeto de Sistemas
 
Iso27001 sgsi
Iso27001 sgsiIso27001 sgsi
Iso27001 sgsi
 
Fundamentos de sistemas de informação
Fundamentos de sistemas de informaçãoFundamentos de sistemas de informação
Fundamentos de sistemas de informação
 
Introdução ao MySQL
Introdução ao MySQLIntrodução ao MySQL
Introdução ao MySQL
 
SGBD
SGBDSGBD
SGBD
 
Segurança em banco de dados
Segurança em banco de dadosSegurança em banco de dados
Segurança em banco de dados
 
Aula diagrama de atividade 3º periodo uniao
Aula diagrama de atividade 3º periodo uniaoAula diagrama de atividade 3º periodo uniao
Aula diagrama de atividade 3º periodo uniao
 
Sistema operativo servidor
Sistema operativo servidorSistema operativo servidor
Sistema operativo servidor
 
Análise Orientada a Objetos - Objetos E Classes
Análise Orientada a Objetos  -   Objetos E ClassesAnálise Orientada a Objetos  -   Objetos E Classes
Análise Orientada a Objetos - Objetos E Classes
 
Segurança da informação
Segurança da informaçãoSegurança da informação
Segurança da informação
 
Aula de Analise e Projetos - Diagramas UML - prof. Rudson Kiyoshi S. Carvalho
Aula de Analise e Projetos - Diagramas UML - prof. Rudson Kiyoshi S. CarvalhoAula de Analise e Projetos - Diagramas UML - prof. Rudson Kiyoshi S. Carvalho
Aula de Analise e Projetos - Diagramas UML - prof. Rudson Kiyoshi S. Carvalho
 

Destaque

TDC 2015 - Segurança em Recursos RESTful com OAuth2
TDC 2015 - Segurança em Recursos RESTful com OAuth2TDC 2015 - Segurança em Recursos RESTful com OAuth2
TDC 2015 - Segurança em Recursos RESTful com OAuth2Rodrigo Cândido da Silva
 
Plataforma de Serviços de Infra-estrutura para Gerência de Mobilidade - SBRC/...
Plataforma de Serviços de Infra-estrutura para Gerência de Mobilidade - SBRC/...Plataforma de Serviços de Infra-estrutura para Gerência de Mobilidade - SBRC/...
Plataforma de Serviços de Infra-estrutura para Gerência de Mobilidade - SBRC/...Tiago Marchetti Dolphine
 
OAuth 1.0 vs OAuth 2.0 - Principais diferenças e as razões para a criação de ...
OAuth 1.0 vs OAuth 2.0 - Principais diferenças e as razões para a criação de ...OAuth 1.0 vs OAuth 2.0 - Principais diferenças e as razões para a criação de ...
OAuth 1.0 vs OAuth 2.0 - Principais diferenças e as razões para a criação de ...Joao Alves
 
Estudo de Caso de uma Estrutura de Autenticação Única utilizando o protocolo ...
Estudo de Caso de uma Estrutura de Autenticação Única utilizando o protocolo ...Estudo de Caso de uma Estrutura de Autenticação Única utilizando o protocolo ...
Estudo de Caso de uma Estrutura de Autenticação Única utilizando o protocolo ...Fernando Geraldo Mantoan
 
An Introduction to OAuth 2
An Introduction to OAuth 2An Introduction to OAuth 2
An Introduction to OAuth 2Aaron Parecki
 
QCon SP 2016 - WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...
QCon SP 2016 -  WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...QCon SP 2016 -  WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...
QCon SP 2016 - WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...Tiago Marchetti Dolphine
 
UFF Tech 2013 - Segurança no Cloud - Álvaro Teófilo, Produban (Banco Santander)
UFF Tech 2013 - Segurança no Cloud -  Álvaro Teófilo, Produban (Banco Santander)UFF Tech 2013 - Segurança no Cloud -  Álvaro Teófilo, Produban (Banco Santander)
UFF Tech 2013 - Segurança no Cloud - Álvaro Teófilo, Produban (Banco Santander)Sti Uff
 
Segurança de APIs HTTP, um guia sensato para desenvolvedores preocupados
Segurança de APIs HTTP, um guia sensato para desenvolvedores preocupadosSegurança de APIs HTTP, um guia sensato para desenvolvedores preocupados
Segurança de APIs HTTP, um guia sensato para desenvolvedores preocupadosLuis Cipriani
 
Descobrindo APIs REST
Descobrindo APIs RESTDescobrindo APIs REST
Descobrindo APIs RESTGuilherme
 
REST: Padrões e Melhores Práticas
REST: Padrões e Melhores PráticasREST: Padrões e Melhores Práticas
REST: Padrões e Melhores PráticasAlessandro Oliveira
 
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)Tiago Marchetti Dolphine
 
Princípios básicos e oAuth 2.0 - MeliDevConf 2013 - SP
Princípios básicos e oAuth 2.0 - MeliDevConf 2013 - SPPrincípios básicos e oAuth 2.0 - MeliDevConf 2013 - SP
Princípios básicos e oAuth 2.0 - MeliDevConf 2013 - SPmelidevelopers
 
Boas práticas no desenvolvimento de uma RESTful API
Boas práticas no desenvolvimento de uma RESTful APIBoas práticas no desenvolvimento de uma RESTful API
Boas práticas no desenvolvimento de uma RESTful APIFernando Camargo
 
muCon 2016: Authentication in Microservice Systems By David Borsos
muCon 2016: Authentication in Microservice Systems By David BorsosmuCon 2016: Authentication in Microservice Systems By David Borsos
muCon 2016: Authentication in Microservice Systems By David BorsosOpenCredo
 
Vantagens e desvantagens de uma arquitetura microservices
Vantagens e desvantagens de uma arquitetura microservicesVantagens e desvantagens de uma arquitetura microservices
Vantagens e desvantagens de uma arquitetura microservicesFábio Rosato
 
Django Rest Framework and React and Redux, Oh My!
Django Rest Framework and React and Redux, Oh My!Django Rest Framework and React and Redux, Oh My!
Django Rest Framework and React and Redux, Oh My!Eric Palakovich Carr
 
Stateless authentication for microservices
Stateless authentication for microservicesStateless authentication for microservices
Stateless authentication for microservicesAlvaro Sanchez-Mariscal
 

Destaque (20)

TDC 2015 - Segurança em Recursos RESTful com OAuth2
TDC 2015 - Segurança em Recursos RESTful com OAuth2TDC 2015 - Segurança em Recursos RESTful com OAuth2
TDC 2015 - Segurança em Recursos RESTful com OAuth2
 
Plataforma de Serviços de Infra-estrutura para Gerência de Mobilidade - SBRC/...
Plataforma de Serviços de Infra-estrutura para Gerência de Mobilidade - SBRC/...Plataforma de Serviços de Infra-estrutura para Gerência de Mobilidade - SBRC/...
Plataforma de Serviços de Infra-estrutura para Gerência de Mobilidade - SBRC/...
 
OAuth 1.0 vs OAuth 2.0 - Principais diferenças e as razões para a criação de ...
OAuth 1.0 vs OAuth 2.0 - Principais diferenças e as razões para a criação de ...OAuth 1.0 vs OAuth 2.0 - Principais diferenças e as razões para a criação de ...
OAuth 1.0 vs OAuth 2.0 - Principais diferenças e as razões para a criação de ...
 
Estudo de Caso de uma Estrutura de Autenticação Única utilizando o protocolo ...
Estudo de Caso de uma Estrutura de Autenticação Única utilizando o protocolo ...Estudo de Caso de uma Estrutura de Autenticação Única utilizando o protocolo ...
Estudo de Caso de uma Estrutura de Autenticação Única utilizando o protocolo ...
 
An Introduction to OAuth 2
An Introduction to OAuth 2An Introduction to OAuth 2
An Introduction to OAuth 2
 
QCon SP 2016 - WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...
QCon SP 2016 -  WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...QCon SP 2016 -  WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...
QCon SP 2016 - WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...
 
UFF Tech 2013 - Segurança no Cloud - Álvaro Teófilo, Produban (Banco Santander)
UFF Tech 2013 - Segurança no Cloud -  Álvaro Teófilo, Produban (Banco Santander)UFF Tech 2013 - Segurança no Cloud -  Álvaro Teófilo, Produban (Banco Santander)
UFF Tech 2013 - Segurança no Cloud - Álvaro Teófilo, Produban (Banco Santander)
 
Segurança de APIs HTTP, um guia sensato para desenvolvedores preocupados
Segurança de APIs HTTP, um guia sensato para desenvolvedores preocupadosSegurança de APIs HTTP, um guia sensato para desenvolvedores preocupados
Segurança de APIs HTTP, um guia sensato para desenvolvedores preocupados
 
Descobrindo APIs REST
Descobrindo APIs RESTDescobrindo APIs REST
Descobrindo APIs REST
 
Rest API's
Rest API'sRest API's
Rest API's
 
OAuth 2.0
OAuth 2.0OAuth 2.0
OAuth 2.0
 
REST: Padrões e Melhores Práticas
REST: Padrões e Melhores PráticasREST: Padrões e Melhores Práticas
REST: Padrões e Melhores Práticas
 
Protocolos de Segurança
Protocolos de SegurançaProtocolos de Segurança
Protocolos de Segurança
 
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
 
Princípios básicos e oAuth 2.0 - MeliDevConf 2013 - SP
Princípios básicos e oAuth 2.0 - MeliDevConf 2013 - SPPrincípios básicos e oAuth 2.0 - MeliDevConf 2013 - SP
Princípios básicos e oAuth 2.0 - MeliDevConf 2013 - SP
 
Boas práticas no desenvolvimento de uma RESTful API
Boas práticas no desenvolvimento de uma RESTful APIBoas práticas no desenvolvimento de uma RESTful API
Boas práticas no desenvolvimento de uma RESTful API
 
muCon 2016: Authentication in Microservice Systems By David Borsos
muCon 2016: Authentication in Microservice Systems By David BorsosmuCon 2016: Authentication in Microservice Systems By David Borsos
muCon 2016: Authentication in Microservice Systems By David Borsos
 
Vantagens e desvantagens de uma arquitetura microservices
Vantagens e desvantagens de uma arquitetura microservicesVantagens e desvantagens de uma arquitetura microservices
Vantagens e desvantagens de uma arquitetura microservices
 
Django Rest Framework and React and Redux, Oh My!
Django Rest Framework and React and Redux, Oh My!Django Rest Framework and React and Redux, Oh My!
Django Rest Framework and React and Redux, Oh My!
 
Stateless authentication for microservices
Stateless authentication for microservicesStateless authentication for microservices
Stateless authentication for microservices
 

Semelhante a OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014

Introdução a plataforma de aplicativos Redu
Introdução a plataforma de aplicativos ReduIntrodução a plataforma de aplicativos Redu
Introdução a plataforma de aplicativos ReduGuilherme
 
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2Rodrigo Cândido da Silva
 
Modern Apps e o novo panorama de identidade e autenticação
Modern Apps e o novo panorama de identidade e autenticaçãoModern Apps e o novo panorama de identidade e autenticação
Modern Apps e o novo panorama de identidade e autenticaçãoJorge Tressino Rua
 
OAuth 2.0 refresher
OAuth 2.0 refresherOAuth 2.0 refresher
OAuth 2.0 refreshermarcwan
 
Sua Startup precisa de uma WebAPI.
Sua Startup precisa de uma WebAPI.Sua Startup precisa de uma WebAPI.
Sua Startup precisa de uma WebAPI.AlexSandro Cruz
 
Sala 2 03 o auth e cadastro de produtos - danilo santos
Sala 2 03   o auth e cadastro de produtos - danilo santosSala 2 03   o auth e cadastro de produtos - danilo santos
Sala 2 03 o auth e cadastro de produtos - danilo santosfsolari
 
#TheDevConf 2018 - spring boot ionic oauth2
#TheDevConf 2018 - spring boot ionic oauth2#TheDevConf 2018 - spring boot ionic oauth2
#TheDevConf 2018 - spring boot ionic oauth2Luiz Avila
 
TDC2018SP | Trilha Java Enterprise - Protegendo sua API Spring Boot com OAuth2
TDC2018SP | Trilha Java Enterprise - Protegendo sua API Spring Boot com OAuth2TDC2018SP | Trilha Java Enterprise - Protegendo sua API Spring Boot com OAuth2
TDC2018SP | Trilha Java Enterprise - Protegendo sua API Spring Boot com OAuth2tdc-globalcode
 
Explorando mecanismos autenticacao na web
Explorando mecanismos autenticacao na webExplorando mecanismos autenticacao na web
Explorando mecanismos autenticacao na webEduardo Cesar
 
Deck apix 2017 design & security - case cielo lio
Deck apix 2017   design & security - case cielo lioDeck apix 2017   design & security - case cielo lio
Deck apix 2017 design & security - case cielo lioLuis Moraes Junior
 
Mineração de dados no Gmail e Facebook
Mineração de dados no Gmail e FacebookMineração de dados no Gmail e Facebook
Mineração de dados no Gmail e FacebookLuiz Arthur
 
Glossario
Glossario Glossario
Glossario vds06
 
APIs seguras com OAuth2
APIs seguras com OAuth2APIs seguras com OAuth2
APIs seguras com OAuth2Luiz Messias
 
Palestra Joomla Day Brasil 2014 - Extensão de Webservice para Joomla 3
Palestra Joomla Day Brasil 2014 - Extensão de Webservice para Joomla 3Palestra Joomla Day Brasil 2014 - Extensão de Webservice para Joomla 3
Palestra Joomla Day Brasil 2014 - Extensão de Webservice para Joomla 3Johnny Salazar Reidel
 
Oracle - Identity Manager
Oracle - Identity ManagerOracle - Identity Manager
Oracle - Identity ManagerThiago Gutierri
 
Backend para dispositivos moveis
Backend para dispositivos moveisBackend para dispositivos moveis
Backend para dispositivos moveisThales Lima
 
uMov.me API - Do básico ao avançado
uMov.me API - Do básico ao avançadouMov.me API - Do básico ao avançado
uMov.me API - Do básico ao avançadoEduardo Bohrer
 

Semelhante a OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014 (20)

Introdução a plataforma de aplicativos Redu
Introdução a plataforma de aplicativos ReduIntrodução a plataforma de aplicativos Redu
Introdução a plataforma de aplicativos Redu
 
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2
 
Modern Apps e o novo panorama de identidade e autenticação
Modern Apps e o novo panorama de identidade e autenticaçãoModern Apps e o novo panorama de identidade e autenticação
Modern Apps e o novo panorama de identidade e autenticação
 
OAuth 2.0 refresher
OAuth 2.0 refresherOAuth 2.0 refresher
OAuth 2.0 refresher
 
GUJavaSC - Protegendo Microservices em Java
GUJavaSC - Protegendo Microservices em JavaGUJavaSC - Protegendo Microservices em Java
GUJavaSC - Protegendo Microservices em Java
 
PHP SSO no Zentyal
PHP SSO no ZentyalPHP SSO no Zentyal
PHP SSO no Zentyal
 
Sua Startup precisa de uma WebAPI.
Sua Startup precisa de uma WebAPI.Sua Startup precisa de uma WebAPI.
Sua Startup precisa de uma WebAPI.
 
Sala 2 03 o auth e cadastro de produtos - danilo santos
Sala 2 03   o auth e cadastro de produtos - danilo santosSala 2 03   o auth e cadastro de produtos - danilo santos
Sala 2 03 o auth e cadastro de produtos - danilo santos
 
#TheDevConf 2018 - spring boot ionic oauth2
#TheDevConf 2018 - spring boot ionic oauth2#TheDevConf 2018 - spring boot ionic oauth2
#TheDevConf 2018 - spring boot ionic oauth2
 
TDC2018SP | Trilha Java Enterprise - Protegendo sua API Spring Boot com OAuth2
TDC2018SP | Trilha Java Enterprise - Protegendo sua API Spring Boot com OAuth2TDC2018SP | Trilha Java Enterprise - Protegendo sua API Spring Boot com OAuth2
TDC2018SP | Trilha Java Enterprise - Protegendo sua API Spring Boot com OAuth2
 
Explorando mecanismos autenticacao na web
Explorando mecanismos autenticacao na webExplorando mecanismos autenticacao na web
Explorando mecanismos autenticacao na web
 
Deck apix 2017 design & security - case cielo lio
Deck apix 2017   design & security - case cielo lioDeck apix 2017   design & security - case cielo lio
Deck apix 2017 design & security - case cielo lio
 
Mineração de dados no Gmail e Facebook
Mineração de dados no Gmail e FacebookMineração de dados no Gmail e Facebook
Mineração de dados no Gmail e Facebook
 
JAVAle - Open-IdentityStack
JAVAle - Open-IdentityStackJAVAle - Open-IdentityStack
JAVAle - Open-IdentityStack
 
Glossario
Glossario Glossario
Glossario
 
APIs seguras com OAuth2
APIs seguras com OAuth2APIs seguras com OAuth2
APIs seguras com OAuth2
 
Palestra Joomla Day Brasil 2014 - Extensão de Webservice para Joomla 3
Palestra Joomla Day Brasil 2014 - Extensão de Webservice para Joomla 3Palestra Joomla Day Brasil 2014 - Extensão de Webservice para Joomla 3
Palestra Joomla Day Brasil 2014 - Extensão de Webservice para Joomla 3
 
Oracle - Identity Manager
Oracle - Identity ManagerOracle - Identity Manager
Oracle - Identity Manager
 
Backend para dispositivos moveis
Backend para dispositivos moveisBackend para dispositivos moveis
Backend para dispositivos moveis
 
uMov.me API - Do básico ao avançado
uMov.me API - Do básico ao avançadouMov.me API - Do básico ao avançado
uMov.me API - Do básico ao avançado
 

OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014

  • 1. OAuth2 Uma abordagem para segurança de aplicações e APIs REST
  • 3. Agenda • Overview • Características • Fluxos • Conclusões • Exemplo
  • 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
  • 5. Exemplo de um cenário atual
  • 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 ==
  • 10. OAuth2 Permite uma aplicação acessar uma API no lugar do usuário, de forma segura e padronizada
  • 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)
  • 18. 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”
  • 20. Implicit client_id id registrado redirect_uri URI callback response_type “token” scope APIs state livre
  • 22. Client Credentials (Client == RO) client_id id registrado client_secret secret registrada grant_type “client_credentials” scope APIs
  • 24. Resource Owner Password client_id id registrado client_secret secret registrada grant_type “password” username username password Password scope APIs
  • 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/
  • 33.
  • 34. Obrigado ! Tiago Marchetti Dophine tiagodolphine@gmail.com @tiagodolphine