Olá, Estudante. Como vai?
Excelente contribuição! Compartilhar a solução para problemas de segurança e controle de acesso (RBAC - Role-Based Access Control) poupa muito tempo dos colegas de turma. O erro 403 Forbidden é um dos mais comuns quando lidamos com o Spring Security, e a sua explicação sobre o motivo do bloqueio (usuário administrador tentando executar uma ação restrita ao comprador) foi muito precisa e direta ao ponto.
Como você está estudando o capítulo de Requisições Paralelas e Threads com Spring, preparei alguns complementos técnicos importantes para contextualizar o porquê de essa validação de perfil ser tão crítica, além de uma dica de boas práticas para os testes:
O Impacto do Token JWT no Ambiente Multithread
No Spring Boot, por padrão, cada requisição HTTP recebida pelo servidor roda dentro de uma Thread isolada (gerenciada pelo servidor embutido Tomcat).
Quando você envia o cabeçalho Authorization: Bearer <TOKEN>, o Spring Security captura esse token na thread da requisição, valida os perfis (Roles) e injeta o usuário autenticado no contexto de segurança (SecurityContextHolder). Garante-se assim que, mesmo que o sistema receba 100 requisições paralelas de compradores e administradores ao mesmo tempo, cada Thread saberá exatamente quem está executando aquela ação sem que ocorra vazamento ou mistura de dados entre os usuários.
Simulando o Cenário de Concorrência com o curl
Para os alunos que estão testando o comportamento assíncrono ou concorrente do projeto (como o disparo de vários pedidos simultâneos), o comando curl que você compartilhou pode ser adaptado para rodar em segundo plano no terminal (usando o caractere & no Linux/macOS ou abrindo várias abas no Windows).
Após capturar o token do comprador, o comando para disparar o cadastro do pedido em paralelo ficaria parecido com isto:
curl --location 'localhost:8080/pedidos' \
--header 'Authorization: Bearer SEU_TOKEN_AQUI' \
--header 'Content-Type: application/json' \
--data '{
"produto_id": 1,
"quantidade": 2
}' &
Ao repetir esse comando adicionando o & no final das linhas, o terminal dispara as requisições de forma simultânea, permitindo visualizar o Spring gerenciando as múltiplas threads de cadastro com o token correto do Comprador!
Parabéns por documentar o passo a passo com o exemplo de payload de login. Isso ajuda muito a manter a comunidade engajada e superando os desafios do curso.
Espero que possa ter lhe ajudado!