Cuso Spring Security Authentication and Authorization

  • DevOps | CI | CD | Kubernetes | Web3

Cuso Spring Security Authentication and Authorization

24 horas
Visã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ático
Conteú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).
  • 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 e PasswordEncoder:
    • 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 um BCryptPasswordEncoder.
  • 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 e Voter (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 e AccessDeniedHandler.

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.

TENHO INTERESSE

Cursos Relacionados

Curso Ansible Red Hat Basics Automation Technical Foundation

16 horas

Curso Terraform Deploying to Oracle Cloud Infrastructure

24 Horas

Curso Ansible Linux Automation with Ansible

24 horas

Ansible Overview of Ansible architecture

16h

Advanced Automation: Ansible Best Practices

32h