feat: harden identity and recovery operations
This commit is contained in:
@@ -37,6 +37,13 @@ Nginx ──► Laravel + Inertia/React
|
||||
- `app/Domain/Operations`: entrega, devolução, faltas, atrasos e incidentes.
|
||||
- `app/Domain/Audit`: logs imutáveis pela interface.
|
||||
- `app/Integrations/SnipeIt`: cliente HTTP, DTOs, mapper e exceções da API Snipe-IT.
|
||||
- `app/Integrations/Microsoft`: cliente OIDC de tenant único, descoberta e validação de tokens.
|
||||
|
||||
## Identidade institucional
|
||||
|
||||
O login Microsoft usa Authorization Code Flow com OIDC e PKCE. O portal descobre `authorization_endpoint`, `token_endpoint`, emissor e `jwks_uri` no documento `.well-known` específico do tenant. O `id_token` só é aceite após validação RS256, expiração, emissor, audiência, tenant e `nonce`; `state` é consumido uma única vez e o fluxo expira ao fim de dez minutos. A rotação de chaves provoca uma atualização imediata do JWKS em cache e uma segunda validação.
|
||||
|
||||
A identidade externa é associada explicitamente a uma conta local já autenticada, após confirmação recente da palavra-passe. Uma coincidência de email nunca cria nem associa contas automaticamente. O portal persiste apenas `sub`, tenant, email apresentado e um subconjunto de claims de perfil; códigos e tokens não são guardados. Utilizadores inativos continuam impedidos de entrar. O login local permanece disponível como contingência operacional.
|
||||
|
||||
## Consistência temporal
|
||||
|
||||
@@ -89,3 +96,9 @@ Referências oficiais usadas para o contrato: [autenticação da API](https://sn
|
||||
- Dois tokens Snipe-IT com menor privilégio.
|
||||
- MFA obrigatório a definir para perfis privilegiados antes do piloto.
|
||||
- Logs de auditoria não expostos a operações de update/delete.
|
||||
|
||||
## Saúde e recuperação
|
||||
|
||||
`/health/live` confirma que o processo HTTP responde. `/health/ready` confirma acesso à base de dados e um ciclo de escrita/leitura no cache, devolvendo apenas o estado global e nunca detalhes de infraestrutura. O health check do Nginx usa readiness.
|
||||
|
||||
Os scripts em `ops/` produzem um `pg_dump` custom com permissões restritas, validam a estrutura e permitem restaurar para uma base temporária descartável. Encriptação, retenção, cópia externa e agendamento pertencem à plataforma de produção e são acompanhados pelo checklist operacional.
|
||||
|
||||
Reference in New Issue
Block a user