Voltar ao blog
Autorização
RBAC
Java
Spring Boot
Autorização

O que é RBAC e como implementar permissões em aplicações Java

Aprenda o que é RBAC, a diferença entre roles e permissions, e veja como aplicar controle de acesso em APIs Java de forma organizada.

10 min de leitura

RBAC (Role-Based Access Control) é o modelo mais adotado para autorização em aplicações empresariais: usuários recebem roles, roles agregam permissions, e endpoints checam se o caller pode executar uma ação. Parece simples — até o código virar um emaranhado de if (user.isAdmin()) espalhado por controllers.

Roles vs permissions

  • Role — agrupamento de negócio (ADMIN, FINANCEIRO, SUPORTE)
  • Permission — ação atômica (users:read, invoices:approve, reports:export)

Boas implementações mapeiam roles → permissions no IAM, e a API valida permissions — não roles hardcoded. Assim você renomeia um perfil no console sem redeploy.

Exemplo prático em Spring Boot

Sem centralização, cada controller repete regras. Com RBAC declarativo, a intenção fica no endpoint:

@RestController
@RequestMapping("/api/invoices")
public class InvoiceController {

  @GetMapping
  @GatekeeperProtected(permissions = "invoices:read")
  public List<Invoice> list() { ... }

  @PostMapping("/{id}/approve")
  @GatekeeperProtected(permissions = "invoices:approve")
  public Invoice approve(@PathVariable UUID id) { ... }
}

Quando usar RBAC

  • Times internos com perfis estáveis (admin, operador, auditor)
  • SaaS B2B onde cada cliente define quem acessa o quê
  • APIs REST com ações discretas e auditáveis

RBAC não resolve tudo: políticas baseadas em atributos (ABAC) podem ser necessárias quando a regra depende de contexto dinâmico (horário, região, dono do recurso). Muitos produtos começam com RBAC e evoluem depois.

Erros comuns

  • Duplicar nomes de role entre serviços sem convenção
  • Checar role no frontend e esquecer validação no backend
  • Permissions muito genéricas (ADMIN faz tudo) sem granularidade
  • Não versionar mudanças de permissão — quebra integrações silenciosamente
  • Misturar permissões de tenant A e tenant B no mesmo token

Como o Gatekeeper ID ajuda

O Console Gatekeeper centraliza usuários, grupos, roles e permissions por tenant. A SDK Spring Boot lê claims do JWT e aplica @GatekeeperProtected antes do handler — uma única fonte de verdade para autorização.

Veja também proteger endpoints com annotations e centralizar permissões em microsserviços.

Conclusão

RBAC bem modelado separa identidade (quem) de autorização (o quê). Em Java, o ganho real vem quando permissions saem do código e vão para uma plataforma gerenciável — com validação consistente em toda a API.

Artigos relacionados