20 lines
1.6 KiB
Markdown
20 lines
1.6 KiB
Markdown
# ADR-001 — Identidade, autorização e acesso anónimo
|
|
|
|
- Estado: Aceite para orientar contratos e novas alterações; não declara implementação completa.
|
|
- Data: 2026-10-01
|
|
- Contexto: Laravel 13, Fortify e sessões existentes; API pública versionada e páginas Inertia. Não foi encontrado emissor/verificador JWT configurado.
|
|
|
|
## Decisão
|
|
|
|
Usar a sessão Laravel como mecanismo primário para browser/Inertia e para operações privadas same-origin, com CSRF, verificação de email quando aplicável, MFA nas áreas já protegidas e autorização explícita por Policy/Gate para cada recurso. Endpoints anónimos são uma allowlist de leitura/submissão pública, com validação, limitação de pedidos e resposta mínima. A existência de uma rota sob `/api` não a torna pública. Não introduzir JWT nem bearer tokens sem consumidor externo, ciclo de vida, audiência, rotação e revogação contratados. Não confiar em IDs enviados pelo cliente para autorizar acesso.
|
|
|
|
## Alternativas consideradas
|
|
|
|
- JWT para toda a aplicação: rejeitado; não há necessidade demonstrada e duplicaria a sessão existente.
|
|
- Um gate global de gestor: insuficiente para autorização por recurso; manter as verificações actuais como barreira adicional, com Policies por domínio.
|
|
- Tornar toda a API pública: rejeitado; publicar só operações explicitamente inventariadas.
|
|
|
|
## Consequências e validação futura
|
|
|
|
Contratos devem declarar `security` por operação e casos anónimo/autenticado/negado. Privacidade SQL/RLS é decisão separada no ADR-007. Alterações futuras precisam de testes positivos e negativos. Esta ADR não converte o gate `manage-portal` em RBAC completo.
|