SlideShare uma empresa Scribd logo
1 de 48
Baixar para ler offline
Globalcode – Open4educationProtegendo sua API Spring Boot
com OAuth2
Trilha – Java Enterprise
Globalcode – Open4education
“Arqueólogo” Java
Desenvolvedor Java desde 1997
P&D Uno Soluções
Instrutor VOffice.
Globalcode – Open4education
Agenda
Segurança
Alguns Métodos de Autenticação
Spring Security
Breve descrição do Ionic Framework
Demo
Q&A
Globalcode – Open4education
Segurança
Autenticação Autorização
Globalcode – Open4education
Verificação se usuário que está acessando
é realmente quem diz ser.
Autenticação Autorização
Globalcode – Open4education
Segurança
Autenticação Autorização
O usuário tem permissão para os recursos
que está tentando acessar
Globalcode – Open4education
Alguns Métodos de autenticação
Soluções “caseiras"
Autenticação baseada Token
HTTP Basic
Assinaturas digitais
OAuth2
Globalcode – Open4education
Alguns Métodos de autenticação
Soluções “caseiras"
Autenticação baseada Token
HTTP Basic
Assinaturas digitais
OAuth2
Globalcode – Open4education
Soluções “caseiras"
Globalcode – Open4education
Soluções “caseiras” Considerações
Globalcode – Open4education
Métodos de autenticação
Soluções "caseiras"
Autenticação baseada Token
HTTP Basic
Assinaturas digitais
OAuth2
Globalcode – Open4education
Autenticação baseada em Token
Globalcode – Open4education
Autenticação baseada em Token
Considerações:
Pouco impacto em performance
Problemas:
Header Tampering
Dictionary Attacks
Man-In-The-Midle
Simples adoção
Recomendado SSL
Globalcode – Open4education
Métodos de autenticação
Soluções caseiras
Autenticação baseada Token
HTTP Basic
Assinaturas digitais
OAuth2
Globalcode – Open4education
HTTP Basic
Authorization: Basic dXN1YXJpbzpzZW5oYQ==
Codificação Base64: usuario:senha
https://www.base64encode.org/
Recomendado SSL
Globalcode – Open4education
HTTP Basic
Considerações:
Pouco impacto em performance
Problema:
Credenciais plaintext
Header Tampering
Dictionary Attacks
Man-In-The-Midle
Simples adoção
Globalcode – Open4education
Métodos de autenticação
Soluções “caseiras"
Autenticação baseada Token
HTTP Basic
Assinaturas digitais
OAuth2
Globalcode – Open4education
Assinatura digital
https://www.devmedia.com.br/autenticacao-de-usuarios-com-certificados-digitais/9495
Globalcode – Open4education
Assinatura digital
Considerações:
Performance afetada na geração de assinaturas
Problemas:
Obriga geração de certificados nas duas pontas
Custo elevado
Nao distingue claramente o usuário
Adoção mais complexa, depende de geração de assinaturas
Globalcode – Open4education
Métodos de autenticação
Soluções “caseiras"
Autenticação baseada Token
HTTP Basic
Assinaturas digitais
OAuth2
Globalcode – Open4education
OAuth2
Protocolo baseado em uma especificação de padrão aberto
IETF - RFC 6749
https://tools.ietf.org/html/rfc6749
Aplicações podem compartilhar recursos sem necessidade
de compartilhar as credenciais
Baseado em tokens
Permite delegação de acesso
Aplicações de terceiros
Tempo limitado
Controle do que pode ser acessado
Vários modos de acesso (usuário ou aplicação)
Globalcode – Open4education
OAuth2 - Quem usa
Globalcode – Open4education
OAuth2 - Roles
Resource Owner
Resource Server
Client
Authorization Server
Globalcode – Open4education
OAuth2 - Fluxo
https://www.digitalocean.com/community/tutorials/an-introduction-to-oauth-2
https://oauth.net/2/
Globalcode – Open4education
OAuth2 - Token
Tipo Bearer
Não é criptografado, necessita de SSL
String em formato Hash
Identificador para buscar dados de acesso a api
Informações do usuário são armazenadas no servidor
Banco de dados
Memória
Access Token de curta duração
Refresh Token de longa duração
119f2b5b-a5d8-481a-b674-4dec18d7be40
Globalcode – Open4education
Token JWT
Baseado em um padrão aberto IETF - RFC 7519
https://tools.ietf.org/html/rfc7519
Permite envio de informações
Garantia de autenticidade
Globalcode – Open4education
Token JWT - Estrutura
Header
Payload
Signature
Globalcode – Open4education
Token JWT - Estrutura
Header
Tipo: JWT
Algoritmo de hashing
Payload
Signature
Globalcode – Open4education
Token JWT - Estrutura
Header
Payload
Corpo do JWT
Informações armazenadas
Signature
Globalcode – Open4education
Token JWT - Estrutura
Header
Payload
Signature
Assinatura do Token
Validar o Token
jo6PSJgZkI74hbTQxleJ-WS6GWxzmf6xUIaCvvRHnE8
Globalcode – Open4education
OAuth2 - Grant types
Authorization Code
Recursos de terceiros
Implicit
SPA
Resource Owner Password Credentials
Trusted Apps
Client Credentials
machine to machine
Globalcode – Open4education
OAuth2 - Grant types
Authorization Code
Recursos de terceiros
Implicit
SPA
Resource Owner Password Credentials
Trusted Apps
Client Credentials
machine to machine
Globalcode – Open4education
OAuth2 - Authorization Code
Globalcode – Open4education
OAuth2 - Authorization Code
Globalcode – Open4education
OAuth2 - Authorization Code
Globalcode – Open4education
OAuth2 - Authorization Code
Globalcode – Open4education
OAuth2 - Authorization Code
Globalcode – Open4education
OAuth2 - Authorization Code
Globalcode – Open4education
OAuth2 - Password Credentials
Globalcode – Open4education
OAuth2 - Considerações
Uso de SSL
Performance pouco afetada, depende do controle dos
tokens
Problemas:
Implementações podem expor vulnerabilidade
Implementações podem ser complexas
Adoção complexa dependendo do suporte a implementação
Globalcode – Open4education
OAuth2 - Spring Security
Implementação do OAuth2
Implementa os 4 tipos de authorization grant
Suporta o papéis definidos pelo OAuth2
Authorization Server
Resource Server
Client
Fácil integração com ecossistema Spring
configuração via anotações
Globalcode – Open4education
Authorization Server
@EnableAuthorizationServer
Habilita a configuração do Autorization Server
ClientDetailsServiceConfigurer
Configurações do Client
Armazenamento Memória ou Banco de dados
AuthorizationServerTokenServices
Configurações para gerenciamento de Tokens
Memória, Banco de Dados ou JWT
AuthorizationServerEndpointConfigurer
Configurações dos grant types suportados pelo servidor
Globalcode – Open4education
Resource Server
Fornece um filtro de autenticação para as aplicações web
@EnableResourceServer
Habilita a configuração do Resource Server
Configuração do controle de acesso
Globalcode – Open4education
Ionic Framework
Framework para desenvolvimento de aplicativos móveis
híbridos baseado em:
Cordova: integração com recursos nativos do dispositivo (todos)
Angular: framework frontend
Linguagem Typescript
Linguagem tipada
Orientada a objetos
Baseada em Javascript
Gera compilações para todas as plataformas (iOs e Android)
Componentes visuais adaptam-se ao estilo da plataforma
gerada.
Globalcode – Open4education
Demo
https://github.com/lapavila/meuslivros-api
https://github.com/lapavila/meuslivros-app
Projeto Spring Boot API
Projeto Aplicação Cliente Ionic
Globalcode – Open4education
Perguntas
Globalcode – Open4education
Referências
https://www.infoq.com/br/presentations/seguranca-em-recursos-restful-com-oauth2
https://www.digitalocean.com/community/tutorials/an-introduction-to-oauth-2
https://oauth.net/2/
https://www.digitalocean.com/community/tutorials/uma-introducao-ao-oauth-2-pt
https://projects.spring.io/spring-boot/
https://github.com/spring-projects/spring-security-oauth
https://ionicframework.com/getting-started
https://jwt.io/
Globalcode – Open4education
Obrigado
@lapavila
/lapavila
/luiz.avila
/lapavila

Mais conteúdo relacionado

Semelhante a Spring Security OAuth2 protege API com autenticação

Implementando APIs REST mais seguras - TDC 2019 - Porto Alegre
Implementando APIs REST mais seguras - TDC 2019 - Porto AlegreImplementando APIs REST mais seguras - TDC 2019 - Porto Alegre
Implementando APIs REST mais seguras - TDC 2019 - Porto AlegreRenato Groff
 
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
 
Implementando APIs REST mais seguras - TDC 2019 - São Paulo
Implementando APIs REST mais seguras - TDC 2019 - São PauloImplementando APIs REST mais seguras - TDC 2019 - São Paulo
Implementando APIs REST mais seguras - TDC 2019 - São PauloRenato Groff
 
Explorando mecanismos autenticacao na web
Explorando mecanismos autenticacao na webExplorando mecanismos autenticacao na web
Explorando mecanismos autenticacao na webEduardo Cesar
 
Manipulando JWT em apis Laravel
Manipulando JWT em apis LaravelManipulando JWT em apis Laravel
Manipulando JWT em apis LaravelEduardo Cesar
 
TDC2017 | São Paulo - Trilha Microservices Coaching I How we figured out we h...
TDC2017 | São Paulo - Trilha Microservices Coaching I How we figured out we h...TDC2017 | São Paulo - Trilha Microservices Coaching I How we figured out we h...
TDC2017 | São Paulo - Trilha Microservices Coaching I How we figured out we h...tdc-globalcode
 
TDC2018SP | Trilha Blockchain - Criando minha Primeira Blockchain Privada (DL...
TDC2018SP | Trilha Blockchain - Criando minha Primeira Blockchain Privada (DL...TDC2018SP | Trilha Blockchain - Criando minha Primeira Blockchain Privada (DL...
TDC2018SP | Trilha Blockchain - Criando minha Primeira Blockchain Privada (DL...tdc-globalcode
 
TDC2017 | São Paulo - Trilha Segurança e Criptografia How we figured out we h...
TDC2017 | São Paulo - Trilha Segurança e Criptografia How we figured out we h...TDC2017 | São Paulo - Trilha Segurança e Criptografia How we figured out we h...
TDC2017 | São Paulo - Trilha Segurança e Criptografia How we figured out we h...tdc-globalcode
 
TDC Connections 2021 – Trilha Software Security - Proteção de dados sensíveis...
TDC Connections 2021 – Trilha Software Security - Proteção de dados sensíveis...TDC Connections 2021 – Trilha Software Security - Proteção de dados sensíveis...
TDC Connections 2021 – Trilha Software Security - Proteção de dados sensíveis...Walter Coan
 
TDC2021 Innovation - Proteção de dados sensíveis com a computação confidencia...
TDC2021 Innovation - Proteção de dados sensíveis com a computação confidencia...TDC2021 Innovation - Proteção de dados sensíveis com a computação confidencia...
TDC2021 Innovation - Proteção de dados sensíveis com a computação confidencia...Walter Coan
 
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
 
Restful APIs com Spring 3
Restful APIs com Spring 3Restful APIs com Spring 3
Restful APIs com Spring 3Alex Miranda
 
Minicurso de Segurança em Java EE 7
Minicurso de Segurança em Java EE 7Minicurso de Segurança em Java EE 7
Minicurso de Segurança em Java EE 7Helder da Rocha
 
Começando com Quorum - versão 2.6
Começando com Quorum - versão 2.6Começando com Quorum - versão 2.6
Começando com Quorum - versão 2.6Jeff Prestes
 
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escalaTDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escalaCleber Dantas
 
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
 
[DTC21] Rodrigo Branas - Segurança na Web: Será que o seu sistema está realme...
[DTC21] Rodrigo Branas - Segurança na Web: Será que o seu sistema está realme...[DTC21] Rodrigo Branas - Segurança na Web: Será que o seu sistema está realme...
[DTC21] Rodrigo Branas - Segurança na Web: Será que o seu sistema está realme...Deep Tech Brasil
 

Semelhante a Spring Security OAuth2 protege API com autenticação (20)

Implementando APIs REST mais seguras - TDC 2019 - Porto Alegre
Implementando APIs REST mais seguras - TDC 2019 - Porto AlegreImplementando APIs REST mais seguras - TDC 2019 - Porto Alegre
Implementando APIs REST mais seguras - TDC 2019 - Porto Alegre
 
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
 
Implementando APIs REST mais seguras - TDC 2019 - São Paulo
Implementando APIs REST mais seguras - TDC 2019 - São PauloImplementando APIs REST mais seguras - TDC 2019 - São Paulo
Implementando APIs REST mais seguras - TDC 2019 - São Paulo
 
Explorando mecanismos autenticacao na web
Explorando mecanismos autenticacao na webExplorando mecanismos autenticacao na web
Explorando mecanismos autenticacao na web
 
GUJavaSC - Protegendo Microservices em Java
GUJavaSC - Protegendo Microservices em JavaGUJavaSC - Protegendo Microservices em Java
GUJavaSC - Protegendo Microservices em Java
 
Manipulando JWT em apis Laravel
Manipulando JWT em apis LaravelManipulando JWT em apis Laravel
Manipulando JWT em apis Laravel
 
TDC2017 | São Paulo - Trilha Microservices Coaching I How we figured out we h...
TDC2017 | São Paulo - Trilha Microservices Coaching I How we figured out we h...TDC2017 | São Paulo - Trilha Microservices Coaching I How we figured out we h...
TDC2017 | São Paulo - Trilha Microservices Coaching I How we figured out we h...
 
TDC2018SP | Trilha Blockchain - Criando minha Primeira Blockchain Privada (DL...
TDC2018SP | Trilha Blockchain - Criando minha Primeira Blockchain Privada (DL...TDC2018SP | Trilha Blockchain - Criando minha Primeira Blockchain Privada (DL...
TDC2018SP | Trilha Blockchain - Criando minha Primeira Blockchain Privada (DL...
 
TDC2017 | São Paulo - Trilha Segurança e Criptografia How we figured out we h...
TDC2017 | São Paulo - Trilha Segurança e Criptografia How we figured out we h...TDC2017 | São Paulo - Trilha Segurança e Criptografia How we figured out we h...
TDC2017 | São Paulo - Trilha Segurança e Criptografia How we figured out we h...
 
PHP SSO no Zentyal
PHP SSO no ZentyalPHP SSO no Zentyal
PHP SSO no Zentyal
 
O auth2 e open id connect
O auth2 e open id connectO auth2 e open id connect
O auth2 e open id connect
 
TDC Connections 2021 – Trilha Software Security - Proteção de dados sensíveis...
TDC Connections 2021 – Trilha Software Security - Proteção de dados sensíveis...TDC Connections 2021 – Trilha Software Security - Proteção de dados sensíveis...
TDC Connections 2021 – Trilha Software Security - Proteção de dados sensíveis...
 
TDC2021 Innovation - Proteção de dados sensíveis com a computação confidencia...
TDC2021 Innovation - Proteção de dados sensíveis com a computação confidencia...TDC2021 Innovation - Proteção de dados sensíveis com a computação confidencia...
TDC2021 Innovation - Proteção de dados sensíveis com a computação confidencia...
 
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
 
Restful APIs com Spring 3
Restful APIs com Spring 3Restful APIs com Spring 3
Restful APIs com Spring 3
 
Minicurso de Segurança em Java EE 7
Minicurso de Segurança em Java EE 7Minicurso de Segurança em Java EE 7
Minicurso de Segurança em Java EE 7
 
Começando com Quorum - versão 2.6
Começando com Quorum - versão 2.6Começando com Quorum - versão 2.6
Começando com Quorum - versão 2.6
 
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escalaTDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
 
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
 
[DTC21] Rodrigo Branas - Segurança na Web: Será que o seu sistema está realme...
[DTC21] Rodrigo Branas - Segurança na Web: Será que o seu sistema está realme...[DTC21] Rodrigo Branas - Segurança na Web: Será que o seu sistema está realme...
[DTC21] Rodrigo Branas - Segurança na Web: Será que o seu sistema está realme...
 

Spring Security OAuth2 protege API com autenticação