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

Autenticação

Quando a dúvida é identidade: login, sessão, MFA, SSO.

Ver o conceito completo

Autorização (RBAC e guards)

Quando usuários autenticados têm poderes diferentes ou dados por dono.

Ver o conceito completo

Por 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.