Autenticação × Autorização (RBAC e guards)
Dois padrões que costumam ser trocados um pelo outro, e o que de fato os separa.
Em uma frase
Autenticação responde *quem é*; autorização responde *o que pode*. Login não é permissão — e if (user) não é RBAC.
Critério a critério
Qual a pergunta?
- Autenticação
- Você é quem diz ser?
- Autorização (RBAC e guards)
- Esta identidade pode executar esta ação neste recurso?
Status HTTP típico da falha?
- Autenticação
- 401 — autentique-se.
- Autorização (RBAC e guards)
- 403 — autenticado, mas proibido.
Onde costuma viver no código?
- Autenticação
- Login, sessão, cookie, IdP.
- Autorização (RBAC e guards)
- Guards, policies, checagem de dono (anti-IDOR).
Dá para ter um sem o outro?
- Autenticação
- Sim — recurso público não autentica.
- Autorização (RBAC e guards)
- Quase não: sem identidade, role não cola.
Quando escolher cada um
Autorização (RBAC e guards)
Quando usuários autenticados têm poderes diferentes ou dados por dono.
Ver o conceito completoPor que confundem
Esconder o botão no front e achar que 'autorizou'. Ou um middleware que só checa user != null e chama isso de guard de admin.