Skip to content

feat(api): aplica autorização por papel e posse nos jobs - #176

Merged
pedro-fs-garcia merged 1 commit into
developfrom
feature/t-091-authorization-jobs-api
Sep 25, 2026
Merged

pedro-fs-garcia merged 1 commit into
developfrom
feature/t-091-authorization-jobs-api

Conversation

@eduardo-Rib

Copy link
Copy Markdown

Objetivo

Aplicar uma política central de autorização às operações de jobs, considerando o papel do usuário autenticado e a posse persistida do recurso.

Closes #104

Alterações

  • adiciona uma política central para autorização das operações de jobs
  • aplica autorização por papel e posse nas rotas existentes
  • restringe as operações operacionais ao papel profissional-rh
  • remove o bypass geral de posse anteriormente concedido ao auditor
  • valida os papéis de negócio presentes no token antes de resolver a conta local
  • nega tokens sem papel conhecido ou contendo simultaneamente profissional-rh e auditor
  • mantém papéis técnicos adicionais do Keycloak sem interferir na autorização
  • garante que a identidade utilizada venha do sub autenticado e da conta local associada
  • filtra a listagem de jobs pelo usuario_id do profissional autenticado
  • aplica autorização antes das mutações de parâmetros, ações e reprocessamento
  • aplica autorização antes da abertura e reabertura de streams SSE
  • mantém requisições de preflight CORS fora da política de negócio
  • nega por padrão rotas de jobs sem uma operação de autorização explicitamente declarada

Rotas cobertas

  • POST /jobs
  • GET /jobs
  • GET /jobs/{id}
  • GET /jobs/{id}/events
  • POST /jobs/{id}/parameters
  • POST /jobs/{id}/actions
  • POST /jobs/{id}/reprocessar

Regras de acesso

  • profissional de RH pode criar jobs para si
  • profissional de RH pode consultar e alterar somente seus próprios jobs
  • auditor não possui acesso às rotas operacionais atuais de jobs
  • usuário autenticado sem papel de negócio conhecido recebe 403
  • usuário com os dois papéis de negócio simultaneamente recebe 403
  • sessão ausente ou inválida continua sendo tratada como 401

Documentação

  • registra a matriz de autorização na DEC-087
  • atualiza o ADR-006 com as regras de papel e posse
  • atualiza a documentação arquitetural e de dados
  • documenta a autorização e reconexão do stream SSE

Testes

  • cobertura da matriz de autorização por papel, operação e posse
  • cobertura de identidade e resolução dos papéis do Keycloak
  • testes HTTP com JWT assinado e PostgreSQL real
  • cobertura de negação sem efeitos persistentes
  • cobertura de fail-closed para operações sem política declarada
  • cobertura de autorização e reconexão SSE
  • cobertura de CORS/preflight
  • 208 testes focados aprovados
  • 13 mutações de autorização detectadas por assertions

- centraliza a política de autorização das operações de jobs
- restringe operações ao profissional de RH proprietário do recurso
- remove o bypass geral de posse para auditor
- valida papéis do Keycloak antes de resolver a conta local
- nega tokens sem papel conhecido ou com papéis conflitantes
- aplica autorização antes de mutações e da abertura de streams SSE
- protege criação, listagem, consulta, parâmetros, ações e reprocessamento
- mantém preflight CORS fora da política de negócio
- atualiza documentação e cobertura de autorização
@eduardo-Rib eduardo-Rib self-assigned this Sep 25, 2026
@pedro-fs-garcia
pedro-fs-garcia merged commit 36c7e52 into develop Sep 25, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants