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

GitLab과 Kubernetes를 통한 CI/CD 구축
GitLab과 Kubernetes를 통한 CI/CD 구축GitLab과 Kubernetes를 통한 CI/CD 구축
GitLab과 Kubernetes를 통한 CI/CD 구축철구 김
 
{Palestra} Criação Web com Frameworks Front-end
{Palestra} Criação Web com Frameworks Front-end{Palestra} Criação Web com Frameworks Front-end
{Palestra} Criação Web com Frameworks Front-endDaniel Brandão
 
삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdf삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdfSeung kyoo Park
 
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개Ian Choi
 
خدمات الويب (Web Services) و كيف تنشئها
 خدمات الويب (Web Services) و كيف تنشئها  خدمات الويب (Web Services) و كيف تنشئها
خدمات الويب (Web Services) و كيف تنشئها lunarhalo
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications JavaAntoine Rey
 
Testing with Spring, AOT, GraalVM, and JUnit 5 - Spring I/O 2023
Testing with Spring, AOT, GraalVM, and JUnit 5 - Spring I/O 2023Testing with Spring, AOT, GraalVM, and JUnit 5 - Spring I/O 2023
Testing with Spring, AOT, GraalVM, and JUnit 5 - Spring I/O 2023Sam Brannen
 
PowerShell: Automation for Everyone
PowerShell: Automation for EveryonePowerShell: Automation for Everyone
PowerShell: Automation for EveryoneIntergen
 
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETArquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETRenato Groff
 
Sap java connector / Hybris RFC
Sap java connector / Hybris RFCSap java connector / Hybris RFC
Sap java connector / Hybris RFCMonsif Elaissoussi
 
IBM JVM 소개 - Oracle JVM 과 비교
IBM JVM 소개 - Oracle JVM 과 비교IBM JVM 소개 - Oracle JVM 과 비교
IBM JVM 소개 - Oracle JVM 과 비교JungWoon Lee
 
Escalando aplicações no front-end com ReactJS
Escalando aplicações no front-end com ReactJSEscalando aplicações no front-end com ReactJS
Escalando aplicações no front-end com ReactJSCriciúma Dev
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partageraliagadir
 
[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)NAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼
 
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍Chris Ohk
 
Aula03 - protocolo http
Aula03 -  protocolo httpAula03 -  protocolo http
Aula03 - protocolo httpCarlos Veiga
 

Mais procurados (20)

GitLab과 Kubernetes를 통한 CI/CD 구축
GitLab과 Kubernetes를 통한 CI/CD 구축GitLab과 Kubernetes를 통한 CI/CD 구축
GitLab과 Kubernetes를 통한 CI/CD 구축
 
{Palestra} Criação Web com Frameworks Front-end
{Palestra} Criação Web com Frameworks Front-end{Palestra} Criação Web com Frameworks Front-end
{Palestra} Criação Web com Frameworks Front-end
 
Corso di servlet jsp e pattern
Corso di servlet jsp e patternCorso di servlet jsp e pattern
Corso di servlet jsp e pattern
 
삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdf삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdf
 
Spring security
Spring securitySpring security
Spring security
 
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개
 
خدمات الويب (Web Services) و كيف تنشئها
 خدمات الويب (Web Services) و كيف تنشئها  خدمات الويب (Web Services) و كيف تنشئها
خدمات الويب (Web Services) و كيف تنشئها
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications Java
 
systemd
systemdsystemd
systemd
 
Testing with Spring, AOT, GraalVM, and JUnit 5 - Spring I/O 2023
Testing with Spring, AOT, GraalVM, and JUnit 5 - Spring I/O 2023Testing with Spring, AOT, GraalVM, and JUnit 5 - Spring I/O 2023
Testing with Spring, AOT, GraalVM, and JUnit 5 - Spring I/O 2023
 
PowerShell: Automation for Everyone
PowerShell: Automation for EveryonePowerShell: Automation for Everyone
PowerShell: Automation for Everyone
 
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETArquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
 
Sap java connector / Hybris RFC
Sap java connector / Hybris RFCSap java connector / Hybris RFC
Sap java connector / Hybris RFC
 
IBM JVM 소개 - Oracle JVM 과 비교
IBM JVM 소개 - Oracle JVM 과 비교IBM JVM 소개 - Oracle JVM 과 비교
IBM JVM 소개 - Oracle JVM 과 비교
 
Escalando aplicações no front-end com ReactJS
Escalando aplicações no front-end com ReactJSEscalando aplicações no front-end com ReactJS
Escalando aplicações no front-end com ReactJS
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partager
 
Android - Conceito e Arquitetura
Android - Conceito e ArquiteturaAndroid - Conceito e Arquitetura
Android - Conceito e Arquitetura
 
[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)
 
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
 
Aula03 - protocolo http
Aula03 -  protocolo httpAula03 -  protocolo http
Aula03 - protocolo http
 

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