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.

Fluxo: Pessoa ou workload, Autenticação, Política de autorização, Token expirado, Decisão auditadaPessoa ou workloadAutenticaçãoPolítica de autorizaçãoToken expiradoDecisão auditada
Ler o fluxo em texto
  1. 1. Pessoa ou workload
  2. 2. Autenticação
  3. 3. Política de autorização
  4. 4. Token expirado
  5. 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

  1. Tecnologia antes do problema: registre hipótese e atributo de qualidade que justificam a escolha.
  2. Caminho feliz apenas: injete timeout, duplicata, concorrência, permissão negada e dado inválido.
  3. 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.
  4. Automação sem condição de parada: limite tentativas e torne o estado pendente visível.
  5. 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

  1. Desenhe a jornada da OS 742 e marque onde esta camada começa e termina.
  2. Explique a diferença entre ocultar uma ação e negar sua autorização no servidor.
  3. 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.
  4. 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.

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 timeout

Passo 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

  1. Execute uma OS válida e capture resposta, estado persistido e correlation ID.
  2. Repita a mesma intenção; o efeito lógico deve continuar único.
  3. Remova a permissão; nenhum estado deve mudar.
  4. Force timeout do ERP; a UI deve mostrar estado honesto e a fila não pode crescer sem limite.
  5. 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

  1. Troque ERP por gateway de pagamento. Quais garantias ficam mais rígidas?
  2. Troque OS por leitura de sensor offline. Onde ordenar e deduplicar?
  3. Reduza o RTO pela metade. Qual custo e complexidade aparecem?
  4. 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.

Teste de fixação

Comprove o que você aprendeu

Responda todas as questões. O gabarito comentado só aparece depois do envio.

1. O que a autenticação estabelece no fluxo da OS?
2. Um supervisor autenticado tenta alterar OS de outra unidade. Qual decisão falta?
3. Qual é o papel de OIDC num login corporativo moderno?

Consulta universal

O que você quer encontrar?

Títulos, capítulos, conceitos, termos, laboratórios e ferramentas em uma única busca.

Digite pelo menos dois caracteres.