Envio ao correio dia 24/02, devido ao Carnaval.

OAuth 2.0 Proteja suas aplicações com o Spring Security OAuth2

Adolfo Eloy

*Você terá acesso às futuras atualizações do livro.

Conteú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.

Saiba o que você vai aprender

 

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

Compartilhe!

Compartilhe no Facebook Compartilhe no Twitter