Identidade, autenticação e autorização: fundamentos, prática e diagnóstico
Este capítulo integra o modelo mental e a prática de identidade, autenticação e autorização em uma única jornada didática. O leitor começa pelo problema operacional, aprende o vocabulário — incluindo identidade, autenticação, autorização, sessão, cookie — e localiza responsabilidades e fronteiras antes de comparar decisões. Em seguida aplica o conceito ao sistema de manutenção conectado ao ERP, executa a menor fatia verificável e provoca falhas de permissão, timeout, duplicata, concorrência ou dado inválido. O caderno operacional mostra como observar o resultado, diagnosticar a primeira divergência e produzir evidência reproduzível. Segurança, custo, critérios de aceite e perguntas de recuperação encerram a unidade sem separar teoria de operação.
Identidade, autenticação e autorização: modelo mental e decisões
O problema e por que importa
Identidade representa quem ou o que está agindo; autenticação verifica essa alegação; autorização decide se aquela ação é permitida naquele recurso. Sessão, cookie e token transportam ou referenciam estado de acesso, mas não substituem a decisão de autorização.
No sistema de manutenção, a pergunta é: o eletricista autenticado pode concluir esta OS desta unidade neste estado, e como revogar o acesso se seu vínculo mudar? “O botão estava visível” nunca é evidência de permissão.
Vocabulário antes das siglas
- identidade: representação estável de uma pessoa, aplicação ou workload no sistema.
- autenticação: processo de verificar uma credencial e estabelecer confiança sobre a identidade alegada.
- autorização: decisão contextual de permitir ou negar uma ação sobre um recurso.
- sessão: estado de autenticação mantido pelo servidor ou referenciado por um identificador.
- cookie: mecanismo do navegador para armazenar e enviar dados associados a um domínio conforme atributos definidos.
- token: credencial apresentada para provar uma concessão; precisa de emissor, público, validade e escopo verificáveis.
- OAuth 2.0: framework de autorização delegada para obter tokens com escopos sem entregar a senha do usuário ao cliente.
- OIDC: OpenID Connect; camada de identidade sobre OAuth 2.0 usada para autenticar o usuário e fornecer informações verificáveis.
- SSO: single sign-on; experiência de autenticar uma vez e acessar múltiplos serviços confiando no mesmo provedor.
- RBAC: controle de acesso baseado em papéis atribuídos às identidades.
- ABAC: controle baseado em atributos do sujeito, recurso, ação e contexto.
OAuth não é sinônimo de login e JWT não é sinônimo de segurança. Para login moderno costuma-se usar OIDC; para autorização, a API valida token e aplica sua própria política sobre o recurso.
Modelo mental
autenticação apresenta um crachá; autorização verifica, em cada porta, se aquele crachá permite a ação naquele recurso. A analogia ajuda a localizar responsabilidades; ela deixa de valer quando esconde concorrência, falhas parciais ou atores maliciosos. Software distribuído não tem uma única percepção de tempo nem sucesso: uma resposta pode se perder depois de um efeito ter ocorrido.
Ler o fluxo em texto
- 1. Pessoa ou workload
- 2. Autenticação
- 3. Política de autorização
- 4. Token expirado
- 5. Decisão auditada
Fronteira e responsabilidade
O provedor de identidade autentica e emite uma declaração limitada. A aplicação valida assinatura, emissor, público, tempo e fluxo, estabelece sessão e mapeia identidade local. A API decide autorização a cada operação sensível com dados atuais.
Cookies de sessão web usam HttpOnly, Secure e SameSite conforme o fluxo e exigem proteção contra CSRF. Tokens de acesso têm vida curta e público específico; refresh tokens são rotacionados e protegidos. Revogação, logout e mudança de função precisam de desenho explícito.
Decisão orientada por risco
| Pergunta de projeto | Decisão inicial | Evidência exigida |
|---|---|---|
| Quem autentica? | Provedor corporativo ou serviço dedicado | Senha não é replicada entre aplicações |
| Sessão ou bearer token? | Escolher pela superfície e ameaça | XSS e CSRF são modelados |
| Onde autorizar? | Servidor, por ação e objeto | Teste tenta acessar OS de outra unidade |
| Como revogar? | Vida curta, rotação e estado de sessão quando necessário | Mudança de vínculo bloqueia o acesso |
A alternativa mais complexa só é promovida quando essa evidência mostra que a solução atual não atende ao risco. A decisão registra também custo operacional, forma de reversão e responsável.
Caso real: manutenção conectada ao ERP
O eletricista conclui a OS 742. O sistema valida identidade, unidade, estado atual e evidências; persiste a mudança; registra auditoria; publica a integração; informa “sincronização pendente” se o ERP não responder. A decisão deste livro aparece ao provar identidades e decidir cada ação com menor privilégio e auditoria. O sucesso não é apenas HTTP 200: banco, usuário, fila, ERP e telemetria precisam convergir para um estado conhecido.
Falha orientadora
um supervisor de outra unidade altera uma OS válida porque a API checou apenas o perfil. Trate a falha como cenário de projeto, não exceção improvável. O controle principal é OIDC, MFA, sessão segura, decisão por recurso/tenant, deny by default e auditoria. Seu teste deve falhar antes do controle e passar depois dele.
Segurança, privacidade e custo
- Armazene senhas somente como hash adaptativo com salt e parâmetros atuais, nunca reversíveis.
- Valide tokens integralmente; apenas decodificar o payload não autentica ninguém.
- Use MFA resistente a phishing para funções críticas sempre que viável.
- Registre decisões e eventos de identidade sem armazenar senha, token completo ou segredo.
O manual de Cybersecurity aprofunda threat modeling, identidade, proteção de dados, supply chain e resposta a incidentes; os controles acima são a aplicação específica nesta disciplina.
Erros frequentes e diagnóstico
- Tecnologia antes do problema: registre hipótese e atributo de qualidade que justificam a escolha.
- Caminho feliz apenas: injete timeout, duplicata, concorrência, permissão negada e dado inválido.
- Métrica de vaidade: acompanhe falhas de login, decisões negadas, sessões revogadas, privilégios sem uso e tempo de remoção de acesso e ligue o sinal a uma decisão.
- Automação sem condição de parada: limite tentativas e torne o estado pendente visível.
- Documentação sem prova: execute exemplos e conecte diagramas a arquivos, owners e testes.
Critérios de aceite
- Fronteira, dono, entradas, saídas e dependências estão diagramados.
- Caminho feliz e falha parcial possuem testes reproduzíveis.
- O controle “OIDC, MFA, sessão segura, decisão por recurso/tenant, deny by default e auditoria” tem evidência observável.
- Segurança, privacidade, acessibilidade, custo e operação foram avaliados.
- A métrica “falhas de login, decisões negadas, sessões revogadas, privilégios sem uso e tempo de remoção de acesso” possui unidade, janela e responsável.
- Runbook informa diagnóstico, mitigação, recuperação e escalonamento.
Prática e recuperação ativa
- Desenhe a jornada da OS 742 e marque onde esta camada começa e termina.
- Explique a diferença entre ocultar uma ação e negar sua autorização no servidor.
- Injete a falha “um supervisor de outra unidade altera uma OS válida porque a API checou apenas o perfil” e capture evidência antes/depois do controle.
- Transfira o raciocínio para um pedido de e-commerce: o que permanece e o que muda?
Entregável verificável: diagrama de login e autorização, matriz de papéis/atributos, teste de acesso entre unidades e demonstração de expiração e revogação. A entrega só é aceita quando outra pessoa consegue repetir a verificação.
Fontes primárias e oficiais
Revisão editorial: 2 de agosto de 2026. Confirme versões antes de implementar configuração volátil.
- https://openid.net/specs/openid-connect-core-1_0.html
- https://www.rfc-editor.org/rfc/rfc9700
- https://pages.nist.gov/800-63-4/
Da compreensão à execução
O modelo anterior explica o que precisa permanecer verdadeiro. Agora o caderno transforma essa compreensão em um experimento. Antes de executar, escreva sua previsão; depois compare o observado com o esperado e registre a primeira fronteira onde o estado divergiu.
Objetivo, hipótese e ambiente
Objetivo: demonstrar provar identidades e decidir cada ação com menor privilégio e auditoria em uma fatia da jornada de manutenção. Hipótese: o controle “OIDC, MFA, sessão segura, decisão por recurso/tenant, deny by default e auditoria” reduz a falha escolhida sem violar o contrato das camadas vizinhas.
Pré-requisitos: Git, terminal, TypeScript ou a tecnologia indicada no exemplo, ambiente local isolado e dados sintéticos. Duração orientativa: 90–180 minutos; depende de prática, não de leitura. Não use credenciais reais nem produção.
sequenceDiagram
actor E as Eletricista
participant W as Aplicativo
participant A as API de manutenção
participant D as Estado canônico
participant R as ERP
E->>W: conclui OS 742
W->>A: intenção + identidade + idempotency-key
A->>D: valida e persiste
A-->>W: estado confirmado ou pendente
A->>R: integração controlada
R-->>A: confirmação, rejeição ou timeoutPasso 1 — registre o contrato antes do código
Escreva pré-condição, pós-condição, erros esperados, timeout e política de repetição. Separe “aceito para processamento” de “confirmado pelo ERP”. Defina o que a pessoa verá durante incerteza. O contrato deve caber em uma tabela e ser revisado por negócio, desenvolvimento, segurança e operação.
| Situação | Resultado público | Estado interno | Próxima ação |
|---|---|---|---|
| Entrada válida | confirmado ou 202 pendente | registrado | processar/observar |
| Sem permissão | negação estável | nenhuma mutação | auditar |
| Duplicata | mesmo resultado lógico | um efeito | responder idempotente |
| Dependência lenta | timeout controlado | pendente conhecido | retry com limite |
| Dado incompatível | erro de contrato | quarentena | corrigir/reprocessar |
Passo 2 — implemente a menor fatia vertical
O trecho é didático e precisa ser adaptado ao runtime indicado. Ele ilustra a decisão central, não constitui aplicação completa.
if (!policy.can(actor, "complete", order)) {
throw new ForbiddenError("scope_or_resource_denied");
}Mantenha a mudança pequena: interface, regra, persistência, teste e sinal operacional no mesmo ticket. Evite construir “toda a infraestrutura” antes de uma jornada observável.
Passo 3 — prove o caminho feliz e o negativo
- Execute uma OS válida e capture resposta, estado persistido e correlation ID.
- Repita a mesma intenção; o efeito lógico deve continuar único.
- Remova a permissão; nenhum estado deve mudar.
- Force timeout do ERP; a UI deve mostrar estado honesto e a fila não pode crescer sem limite.
- Corrompa um campo do contrato; rejeite-o com erro útil, sem stack trace nem segredo.
O teste negativo é parte do produto. Sem ele, o controle pode existir apenas no diagrama.
Passo 4 — instrumente a decisão
Registre duração, resultado, dependência, versão do contrato e correlação. Não use nome, e-mail, token, payload completo nem user_id como dimensão ilimitada de métrica. Para este livro, acompanhe falhas de login, decisões negadas, sessões revogadas, privilégios sem uso e tempo de remoção de acesso. Defina SLI, janela, limiar e ação humana associada.
Exemplo de evento estruturado conceitual:
{
"event": "work_order.transition",
"order_id": "742",
"result": "pending_erp",
"contract_version": "v1",
"correlation_id": "demo-01",
"duration_ms": 184
}Passo 5 — injete falha e recupere
Falha-alvo: um supervisor de outra unidade altera uma OS válida porque a API checou apenas o perfil.
- Detectar: qual sinal diferencia falha real de tráfego normal?
- Conter: como impedir propagação, repetição ilimitada ou perda de dados?
- Mitigar: qual recurso pode ser desativado ou degradado com segurança?
- Recuperar: como reprocessar sem duplicar efeito?
- Aprender: qual teste, alerta, ADR ou limite impedirá recorrência?
Use timeout curto no laboratório e retry limitado com atraso e jitter. Um retry não é recuperação quando a operação não é idempotente. Registre itens que exigem intervenção humana em fila consultável; não esconda exceções em log.
Segurança e abuso
Faça uma mini análise: ativo, ator, fronteira, ameaça, impacto, controle e teste. Teste acesso horizontal entre unidades, elevação de perfil, payload grande, repetição rápida, dado fora de ordem e indisponibilidade. O controle esperado é OIDC, MFA, sessão segura, decisão por recurso/tenant, deny by default e auditoria. Valide no servidor e preserve evidência sem expor segredos.
Troubleshooting
| Sintoma | Hipótese | Verificação | Correção segura |
|---|---|---|---|
| Estado diverge do ERP | efeito parcial | correlação + outbox/inbox | reconciliar idempotentemente |
| Latência cresce | fila ou dependência saturada | p95/p99, lag, pool | backpressure e capacidade |
| Só um tenant falha | escopo, dado ou quota | dimensão de tenant controlada | corrigir política/dado |
| Retry aumenta erro | operação não idempotente | contar efeitos por chave | deduplicar e limitar |
| Dashboard “verde” | SLI não representa jornada | teste sintético E2E | medir resultado do usuário |
Critérios de aceite verificáveis
- Caminho feliz, entrada inválida, negação, duplicata e timeout foram executados.
- O segundo envio com a mesma chave não produz segundo efeito.
- Nenhum segredo ou dado pessoal aparece em saída, log ou fixture.
- A falha é detectada por sinal antes da reclamação do usuário.
- Existe estado explícito para pendência e procedimento de reconciliação.
- O resultado inclui teste, captura de telemetria, ADR e atualização do runbook.
Evidência, limpeza e solução comentada
Guarde: comandos, versões, saída dos testes, screenshot do fluxo, consulta de estado e gráfico do sinal. Remova ambiente e dados sintéticos; revogue qualquer credencial de laboratório. A solução adequada não é uma ferramenta específica: é a menor composição que satisfaz o contrato e demonstra recuperação.
Exercícios de transferência
- Troque ERP por gateway de pagamento. Quais garantias ficam mais rígidas?
- Troque OS por leitura de sensor offline. Onde ordenar e deduplicar?
- Reduza o RTO pela metade. Qual custo e complexidade aparecem?
- Explique em voz alta por que
autenticação apresenta um crachá; autorização verifica, em cada porta, se aquele crachá permite a ação naquele recursoé útil e onde a analogia quebra.
Fontes
Consulte as fontes oficiais do capítulo conceitual e registre versão/data no relatório do laboratório. Para observabilidade, use OpenTelemetry; para segurança, use o manual canônico.
Comprove o que você aprendeu
Responda todas as questões. O gabarito comentado só aparece depois do envio.