Segurança

TL;DR

O Galho 12 é a camada que protege a borda web do Galho 9 usando o mecanismo do Galho 8: o filter chain, autenticação e password encoding, autorização URL-based e method-level, JWT, OAuth2/OIDC, CSRF/CORS, session management e security headers, e o OWASP Top 10 mapeado pras defesas do Spring Security. São 18 notas em 3 fases (Iniciado, Adepto, Magus).

Sobre este galho

Segurança no stack Spring é a camada que autentica (quem é você) e autoriza (o que você pode) cada request antes que ela toque a regra de negócio. Este galho parte do filter chain e do SecurityContext, percorre a autenticação (UserDetailsService, password encoding) e a autorização (URL-based e method-level com SpEL), sobe pro mundo stateless (JWT, OAuth2 Resource Server, OIDC Client, refresh tokens), cobre as defesas de borda (CSRF, CORS, headers, sessão) e fecha mapeando o OWASP Top 10 pras ferramentas do Spring Security, com um capstone de API production-grade.

Audiência primária: dev pleno/sênior que vai encarar entrevista internacional de backend Java/Spring e precisa explicar autenticação, autorização e o filter chain com critério. Secundária: quem desenha ou audita a segurança de uma API Spring e precisa decidir entre stateful e stateless, URL-based e method-level, RBAC e ABAC.

É um galho híbrido: combina a poda integral do tronco Spring Security.md (a nota monolítica antiga, agora dissolvida em notas atômicas) com pesquisa version-specific na doc oficial do Spring Security 6.x. E tem dupla fronteira: usa o mecanismo AOP do Galho 8 (Spring Core e Boot — os proxies que fazem @PreAuthorize funcionar), protege a borda web do Galho 9 (Web e APIs REST — os endpoints que o filter chain envolve) e toca de leve a Servlet API do Galho 7 (Jakarta EE — os Filters por baixo do SecurityFilterChain). As notas linkam de volta a essas fronteiras sem re-explicá-las.

O foco é servlet/MVC: a segurança reativa (WebFlux Security) é fronteira pra frente. Testes de segurança são o galho Testes; segurança em microservices é o galho Microservices e sistemas distribuídos; segredos/cloud security não têm cobertura aqui (o Galho 17 trata só de ConfigMap/Secret básico em produção, não de secret-management).

Iniciado

O modelo mental — authn, authz e o usuário atual.

Adepto

O filter chain a fundo, method security, JWT e as defesas de borda.

  • 06 — A arquitetura do filter chain — a ordem dos filtros, o SecurityFilterChain e como o request atravessa.
  • 07 — Method security — autorização no método com @PreAuthorize/@PostAuthorize e o poder do SpEL.
  • 08 — JWT — header, payload e signature: a estrutura, a assinatura e a validação de um token.
  • 09 — OAuth2 Resource Server — a API como Resource Server validando o JWT a cada request.
  • 10 — CSRF — o ataque, por que o Spring liga CSRF por default e quando é seguro desligar.
  • 11 — CORS — a same-origin policy, o preflight OPTIONS e onde a config de CORS entra na segurança.

Magus

OAuth2/OIDC client, autorização avançada, o panorama OWASP e o capstone.

Rotas alternativas

  • Completa — 01 → 18 em ordem (do filter chain ao capstone).
  • Entrevista internacional — 01 → 03 → 06 → 07 → 08 → 09 → 17 (Spring Security, autenticação, filter chain, method security, JWT, Resource Server, request de ponta a ponta — o que mais cai).
  • API stateless com JWT — 01 → 08 → 09 → 10 → 13 → 17 (o modelo, JWT, Resource Server, CSRF no contexto stateless, refresh, request de ponta a ponta).
  • Autorização do grosso ao fino — 05 → 07 → 14 → 16 (URL-based, method-level, AuthorizationManager/RBAC-vs-ABAC, OWASP).
  • Protegendo a borda web — 01 → 06 → 10 → 11 → 15 + Galho 9 (DispatcherServlet, Interceptors vs Filters — onde a segurança encontra o MVC).

Todas as notas

TABLE fase, status
FROM "03-Dominios/Java/Segurança"
WHERE type = "concept"
SORT file.name ASC

Veja também

Galhos 13 (Testes), 16 (Microservices) e 17 (Cloud) — planejados.

18 items neste arquivo.