Cuso Spring Security Authentication and Authorization
24 horasVisão Geral
Cuso Spring Security Authentication and AuthorizationEste curso. intensivo e prático é projetado para desenvolvedores Java, engenheiros de backend e arquitetos de software que desejam dominar o Spring Security, a estrutura mais robusta e amplamente utilizada para segurança em aplicações Spring e Spring Boot. Do ponto de vista técnico, você mergulhará nos fundamentos da autenticação (quem você é?) e autorização (o que você pode fazer?), explorando as diferentes abordagens do Spring Security. Abordaremos desde a configuração básica de segurança baseada em formulários e HTTP Basic, até cenários mais complexos como autenticação com JWT (JSON Web Tokens), integração com OAuth 2.0/OpenID Connect (com foco no uso do Spring Boot Starter para o cliente), e uso de métodos de autenticação externos como LDAP. Você aprenderá a implementar regras de autorização granulares (baseadas em roles, permissões e expressões), a lidar com sessões, CSRF, CORS e outras ameaças comuns. O curso será repleto de exemplos de código atualizados para as versões mais recentes do Spring Boot e Spring Security, garantindo que os participantes possam construir aplicações seguras e resilientes.
Cuso Spring Security Authentication and Authorization, a segurança de aplicações é uma prioridade máxima para todas as organizações, especialmente aquelas que lidam com dados sensíveis ou operam em ambientes regulados. Dominar o Spring Security significa adquirir uma habilidade que é essencial e altamente valorizada no mercado de desenvolvimento Java, permitindo que as empresas protejam seus dados, evitem violações de segurança, garantam a conformidade e mantenham a confiança de seus usuários. Profissionais capazes de projetar e implementar sistemas seguros não só reduzem riscos financeiros e de reputação, mas também aceleram o ciclo de desenvolvimento ao integrar a segurança desde o início. Esta expertise é um diferencial competitivo crucial e um impulsionador de carreira para qualquer desenvolvedor Java.
Objetivo
Ao final do Cuso Spring Security Authentication and Authorization, você será capaz de:
- Compreender os conceitos fundamentais de segurança em aplicações web (autenticação, autorização, princípios, sessões).
- Configurar o Spring Security para diferentes tipos de autenticação (formulário, HTTP Basic, JWT, OAuth 2.0).
- Implementar regras de autorização granulares baseadas em roles, permissões e expressões.
- Gerenciar sessões e proteger contra ataques comuns como CSRF e CORS.
- Integrar o JWT (JSON Web Tokens) para autenticação stateless em APIs REST.
- Entender e configurar o Spring Security OAuth2 Client para interagir com provedores de identidade externos.
- Utilizar UserDetailsService e PasswordEncoder para gerenciar usuários e senhas.
- Aplicar melhores práticas de segurança e otimização para aplicações Spring.
Publico Alvo
- Desenvolvedores Java e Spring Boot: Que precisam implementar segurança em suas aplicações.
- Engenheiros de Backend: Que trabalham com APIs e microsserviços e buscam proteger seus endpoints.
- Arquitetos de Software: Para projetar soluções de segurança baseadas em Spring.
Pre-Requisitos
- Conhecimento sólido de Java e Spring Boot: Familiaridade com anotações Spring, injeção de dependências, REST APIs e Maven/Gradle.
- Noções básicas de HTTP (métodos, códigos de status, headers).
- Conhecimento de JSON e como APIs REST funcionam.
Materiais
Inglês/Português/Lab PráticoConteúdo Programatico
Módulo 1: Fundamentos de Segurança e Introdução ao Spring Security (4 horas)
- 1.1. Conceitos Essenciais de Segurança em Aplicações:
- Autenticação vs. Autorização.
- Entidades de Segurança: Usuários, Credenciais, Roles, Permissões.
- Ataques Comuns: Injeção de SQL, XSS, CSRF, MitM, Força Bruta.
- 1.2. Visão Geral do Spring Security:
- Arquitetura e componentes chave (FilterChain, SecurityContextHolder, AuthenticationManager, AccessDecisionManager).
- Como o Spring Security se encaixa no ciclo de vida de uma requisição.
- 1.3. Configuração Básica do Spring Security:
- Adicionando a dependência
spring-boot-starter-security
. - Configuração padrão e a senha gerada automaticamente.
- Desabilitando a segurança (temporariamente, para fins de estudo).
- Adicionando a dependência
- 1.4. Autenticação Baseada em Formulário e HTTP Basic:
- Configuração padrão para formulário de login.
- Autenticação HTTP Basic: Vantagens e desvantagens.
- Hands-on: Configurar autenticação HTTP Basic e testar via Postman.
- 1.5.
UserDetailsService
ePasswordEncoder
:- Implementando seu próprio
UserDetailsService
para carregar usuários de uma fonte customizada (memória, banco de dados). - Tipos de
PasswordEncoder
(BCrypt, Argon2, PBKDF2) e por que usá-los. - Hands-on: Criar um
UserDetailsService
customizado e configurar umBCryptPasswordEncoder
.
- Implementando seu próprio
- Prática: Criar um projeto Spring Boot com Spring Security. Implementar autenticação HTTP Basic e baseada em formulário com usuários em memória e depois via UserDetailsService customizado.
Módulo 2: Autorização e Expressões de Segurança (5 horas)
- 2.1. Conceitos de Autorização:
- Roles (Papéis) vs. Authorities (Autoridades/Permissões).
- Decisões de Acesso.
- 2.2. Autorização Baseada em Roles:
@Secured
,@RolesAllowed
,@PreAuthorize("hasRole('ADMIN')")
.- Configurando roles para usuários.
- Hands-on: Proteger endpoints e métodos com
@PreAuthorize("hasRole(...)")
.
- 2.3. Expressões de Segurança (SpEL):
hasRole()
,hasAnyRole()
,hasAuthority()
,hasAnyAuthority()
.isAuthenticated()
,isAnonymous()
,isFullyAuthenticated()
.- Acessando o objeto
Authentication
:principal
,authentication
. - Hands-on: Usar expressões SpEL para autorização mais flexível.
- 2.4. Autorização Baseada em Permissões (Authorities):
- Por que usar permissões em vez de apenas roles.
- Atribuindo permissões e verificando com
hasAuthority()
.
- 2.5. Autorização em Nível de Objeto (Conceitual):
- ACLs (Access Control Lists) e sua complexidade.
- Uso de
PermissionEvaluator
eVoter
(visão geral).
- Prática: Proteger endpoints e métodos com diferentes regras de autorização (
hasRole
,hasAuthority
,isAuthenticated
). Experimentar com expressões SpEL.
Módulo 3: Segurança para APIs REST: JWT (JSON Web Tokens) (5 horas)
- 3.1. Autenticação Stateless vs. Stateful:
- Diferenças e vantagens do stateless para APIs REST.
- Problemas de escalabilidade com sessões de servidor.
- 3.2. Introdução ao JWT (JSON Web Tokens):
- Estrutura do JWT (Header, Payload, Signature).
- Criação e validação de JWTs.
- Assinatura e criptografia.
- 3.3. Implementando Autenticação JWT com Spring Security:
- Geração do token após a autenticação.
- Filtro JWT para interceptar requisições e validar tokens.
- Extraindo autoridades do token.
- Hands-on: Construir um sistema de login que gera um JWT e proteger endpoints com esse token.
- 3.4. Refreshing Tokens e Revogação (Melhores Práticas):
- Estratégias para refrescar tokens de acesso.
- Desafios da revogação de tokens JWT.
- 3.5. Tratamento de Exceções em APIs Seguras:
AuthenticationEntryPoint
para 401 Unauthorized.AccessDeniedHandler
para 403 Forbidden.
- Prática: Implementar um fluxo de autenticação JWT completo: login, geração de token, validação de token em requisições subsequentes. Configurar
AuthenticationEntryPoint
eAccessDeniedHandler
.
Módulo 4: Gerenciamento de Sessões e Proteção contra Ataques Comuns (3 horas)
- 4.1. Gerenciamento de Sessões no Spring Security:
- Estratégias de criação de sessão (Always, If_Required, Never, Stateless).
- Concorrência de sessões: Limites de login por usuário.
- Expiração de sessão e logout.
- Hands-on: Configurar limites de sessões e testar logout.
- 4.2. Proteção contra CSRF (Cross-Site Request Forgery):
- O que é CSRF e como funciona o ataque.
- Como o Spring Security protege contra CSRF.
- Exceções CSRF (para APIs sem estado).
- 4.3. Proteção contra CORS (Cross-Origin Resource Sharing):
- O que é CORS e por que é um problema de segurança.
- Configurando CORS no Spring Security.
- Hands-on: Configurar CORS para permitir requisições de origens específicas.
- 4.4. Header-based Security:
- Headers HTTP de segurança (X-Content-Type-Options, X-Frame-Options, HSTS).
- Hands-on: Configurar headers de segurança via Spring Security.
- Prática: Configurar CSRF e CORS em uma aplicação web. Testar os headers de segurança.
Módulo 5: OAuth 2.0 / OpenID Connect e Boas Práticas (3 horas)
- 5.1. Introdução ao OAuth 2.0 e OpenID Connect (OIDC):
- O que é OAuth 2.0 (delegação de autorização).
- O que é OpenID Connect (autenticação sobre OAuth 2.0).
- Papéis e Fluxos OAuth 2.0 (Authorization Code Flow).
- 5.2. Spring Security OAuth2 Client:
- Integrando sua aplicação como um cliente OAuth 2.0.
- Configuração para provedores populares (Google, GitHub, Keycloak).
- Acessando recursos protegidos por OAuth 2.0.
- Hands-on: Configurar um cliente OAuth 2.0 para autenticar com um provedor externo (ex: Google).
- 5.3. Integração com LDAP (Visão Geral):
- Autenticação e autorização via servidores LDAP.
- Uso do
spring-security-ldap
.
- 5.4. Melhores Práticas e Dicas de Segurança:
- Princípio do menor privilégio.
- Armazenamento seguro de senhas.
- Logging de segurança.
- Auditoria e monitoramento.
- Atualizações de dependências.
- Prática: Configurar uma aplicação como cliente OAuth 2.0 para autenticar usuários via Google. Discussão sobre melhores práticas de segurança em projetos reais.