OAuth 2.0 Proteja suas aplicações com o Spring Security OAuth2
Adolfo EloyConteúdo
Quando se trata de proteger os recursos de uma aplicação, é comum utilizar OAuth. Ainda assim, percebe-se que ainda existe bastante confusão a respeito dele, havendo até cenários de brechas em sistemas grandes devido ao mau uso da tecnologia. OAuth 2.0 é um protocolo ou um framework? Será que deve ser usado para autenticação ou autorização?
Neste livro, Adolfo Eloy vem desmistificar essas perguntas, em uma mescla de teoria e prática, alertando para a importância do uso seguro da tecnologia. Por meio de uma aplicação de exemplo, você aprenderá os principais componentes presentes no fluxo do OAuth 2.0, como Resource Owner, Client, Resource Server e Authorization Server, acompanhando diferentes cenários de utilização do protocolo, nos pontos cruciais de segurança da sua aplicação.
Sumário
- 1 Introdução
- 1.1 Como as APIs são protegidas
- 1.2 Acessando uma API de um jeito diferente
- 1.3 Repassando credenciais, um exemplo de anti-pattern
- 1.4 Delegação de acesso a recursos protegidos
- 1.5 Soluções para delegação de acesso
- 1.6 OAuth como solução e sua evolução para o OAuth 2.0
- 1.7 Suporte a diferentes tipos de aplicação
- 1.8 Facilidade para o desenvolvedor
- 1.9 Extensibilidade
- 1.10 Conclusão
- 2 O framework de autorização OAuth 2.0
- 2.1 Papéis definidos pelo OAuth 2.0
- 2.2 Registro do Client no Authorization Server
- 2.3 Grant types
- 2.4 Fluxo básico para obtenção do access token
- 2.5 Utilização do token de acesso
- 2.6 Autenticação ou autorização
- 2.7 Conclusão
- 3 Iniciando o projeto de exemplo
- 3.1 Estrutura básica do projeto
- 3.2 O projeto Lombok
- 3.3 Spring Boot
- 3.4 Configuração do banco de dados
- 3.5 Modelo de classes do projeto
- 3.6 Subindo a aplicação
- 3.7 A criação da API
- 3.8 Conclusão
- 4 Proteja a aplicação com Spring Security
- 4.1 Configuração da aplicação usando XML
- 4.2 Configuração efetiva com anotações
- 4.3 Recuperar os dados do Resource Owner
- 4.4 Conclusão
- 5 Exemplo de aplicação cliente
- 5.1 O funcionamento da aplicação client
- 5.2 Integração repassando as credenciais
- 5.3 Conclusão
- 6 O Spring Security OAuth2
- 6.1 Authorization Server e Resource Server juntos
- 6.2 Authorization Server e Resource Server separados
- 6.3 Configuração do Spring Security OAuth2
- 6.4 Configuração do Resource Server
- 6.5 Configuração inicial do Authorization Server
- 6.6 Registro do Client no Authorization Server
- 6.7 Conclusão
- 7 Password credentials grant type
- 7.1 Configurando o Authorization Server
- 7.2 Entendendo cada etapa do grant type Password
- 7.3 Implementação do Client
- 7.4 Quando usar o grant type Password
- 7.5 Conclusão
- 8 Funcionamento interno do Spring Security OAuth2
- 8.1 Acesso aos recursos de usuário específico
- 8.2 Conclusão
- 9 Authorization Code grant type
- 9.1 Visão geral das etapas do grant type Authorization Code
- 9.2 Configurando o Authorization Server
- 9.3 Etapa de autorização
- 9.4 Etapa de solicitação do token
- 9.5 Utilizando o token de acesso
- 9.6 Implementação do Client
- 9.7 Quando usar o grant type Authorization Code
- 9.8 Conclusão
- 10 Implicit grant type para aplicações no Browser
- 10.1 Configurando o Authorization Server
- 10.2 Etapa de autorização e solicitação do token
- 10.3 Erros durante a etapa de autorização
- 10.4 Implementação do Client
- 10.5 Quando usar o grant type Implicit
- 10.6 Conclusão
- 11 Client Credentials
- 11.1 Implementação do novo serviço para aplicações internas
- 11.2 Solicitação do token de acesso
- 11.3 Implementação do Client
- 11.4 Quando usar o grant type Client Credentials
- 11.5 Conclusão
- 12 Refresh Tokens e escopos para aumentar a segurança
- 12.1 Quando usar refresh tokens e como configurar
- 12.2 Adicionando suporte a refresh token
- 12.3 Validando os escopos durante o acesso a uma API
- 12.4 Configuração dos endpoints com escopos
- 12.5 Configurando roles para os usuários
- 12.6 Relacionando escopos e roles
- 12.7 Conclusão
- 13 Adicionando suporte a banco de dados no projeto
- 13.1 A definição do banco de dados
- 13.2 Criando o banco de dados para o Authorization Server
- 13.3 Configurando a aplicação para usar o banco de dados
- 13.4 Configuração do Authorization Server
- 13.5 Conclusão
- 14 Client com o Spring Security OAuth2
- 14.1 Situação atual do Client
- 14.2 Iniciando a configuração do Spring Security OAuth2 para o Client
- 14.3 Usando o banco de dados para manter os dados do token do usuário
- 14.4 Requisição usando OAuth2RestTemplate nos bastidores
- 14.5 Conclusão
- 15 Alternativas para validação de tokens
- 15.1 Introspecção de tokens
- 15.2 Introspecção com o Spring Security OAuth2
- 15.3 Testando o endpoint check_token
- 15.4 Como usar a validação remota
- 15.5 Quando usar a abordagem de validação remota
- 15.6 Tokens autocontidos com JWT
- 15.7 Usando JWT com Spring Security OAuth2
- 15.8 Adicionando claims customizadas
- 15.9 Conclusão
- 16 OAuth 2.0 como base para autenticação
- 16.1 Por que não usar OAuth 2.0 para autenticação?
- 16.2 OpenID Connect como solução para autenticação
- 16.3 Fluxo de autenticação usando OpenID Connect
- 16.4 Interações dinâmicas entre Relying Party e Identity Provider
- 16.5 Autenticação com uma conta Google
- 16.6 Obtendo os dados de autenticação do usuário
- 16.7 Conclusão
- 17 Algumas considerações sobre segurança
- 17.1 Modelo de ameaças de segurança para o protocolo OAuth 2.0
- 17.2 Análise da aplicação bookserver
- 17.3 A importância da URI de redirecionamento
- 17.4 A importância do parâmetro state
- 17.5 Detalhes importantes para o Client
- 17.6 Conclusão
- 18 Bibliografia
Autor
Adolfo Eloy
Adolfo Eloy Nascimento trabalha com desenvolvimento de software há pouco mais de 15 anos, é formado em Ciência da Computação pela Faculdade Instituto Tecnológico de Osasco (FAC-FITO) e atualmente trabalha como Software Engineer no Elo7. Possui experiência com a linguagem Java mas já trabalhou com outras linguagens como JavaScript, Ruby, C e PHP5. Sempre está interessado em aprender e contribuir para o desenvolvimento de software, seja programando ou compartilhando conhecimento através de posts no blog Devadventures e artigos para revista Java Magazine.
Dados do produto
- Número de páginas:
- 366
- ISBN:
- 978-85-94188-12-0
- Data publicação:
- 09/2017