oauth2: uma abordagem para segurança de aplicações e apis rest - devcamp 2014

34
OAuth2 Uma abordagem para segurança de aplicações e APIs REST

Upload: tiago-marchetti-dolphine

Post on 20-Jun-2015

1.605 views

Category:

Internet


0 download

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

OAuth2

Uma abordagem para segurança de aplicações e APIs REST

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

Tiago Marchetti Dophine

[email protected]@tiagodolphine

Sobre?

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

Agenda

• Overview• Características• Fluxos• Conclusões• Exemplo

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

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

Exemplo de um cenário atual

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

Como solucionar?

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

Armazenar credenciais do usuário?

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

Armazenar credenciais do usuário?

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

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

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

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

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

Exemplo de arquitetura

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

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
Page 16: OAuth2: Uma abordagem para segurança de aplicações e APIs REST  - Devcamp 2014

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

Authorization Code (Aplicações Web)

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

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

Implicit

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

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

Client Credentials (Client == RO)

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

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

Resource Owner Password

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

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

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

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

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

Mas quem está usando?

Facebook

Google

Twitter

Linkedin

PayPal

Dropbox

Wordpress

Microsoft Live

. . .

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

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

Exemplo de arquitetura

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

Eclipse

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

Obrigado !

Tiago Marchetti Dophine

[email protected]

@tiagodolphine