HenriqueMarino.github.io
JavaSpring SecurityJWTRBACDocker

JWT RBAC Spring

Template de autenticação stateless em Java + Spring Security com JWT HS256 e controle de acesso por papéis (RBAC), dockerizado e pronto para reuso em microsserviços.

01 de junho de 20241 min de leitura

Projeto em desenvolvimento

Este estudo de caso ainda está sendo finalizado. O conteúdo é preliminar e deve mudar conforme o projeto evoluir.

Status

em desenvolvimento

Papel

Backend Engineer

Stack

Java, Spring Boot, Spring Security, JWT HS256, RBAC, Docker

Objetivo

Um template enxuto de autenticação stateless em Spring Security: login, emissão e validação de JWT assinado com HS256 e autorização baseada em papéis (RBAC). A ideia é servir como ponto de partida dockerizado e reutilizável entre microsserviços, sem reimplementar segurança do zero a cada projeto.

Decisões

  • JWT HS256 para autenticação stateless entre clientes e APIs.
  • RBAC: papéis e permissões mapeados para as authorities do Spring Security.
  • Filtros e providers do Spring Security para validação e políticas de acesso.
  • Docker para subir o serviço de forma reproduzível e integrável a outros stacks.
@Bean
SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
    return http
        .csrf(AbstractHttpConfigurer::disable)
        .sessionManagement(s -> s.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
        .authorizeHttpRequests(auth -> auth
            .requestMatchers("/auth/**").permitAll()
            .requestMatchers("/admin/**").hasRole("ADMIN")
            .anyRequest().authenticated()
        )
        .addFilterBefore(jwtAuthFilter, UsernamePasswordAuthenticationFilter.class)
        .build();
}