Autenticação e autorização
Um caminho confiável é um único ponto de verdade sobre quem você é (autenticação) e o que é permitido (autorização). Em uma plataforma com muitas marcas, regiões, integrações e exigências regulatórias elevadas, este circuito deve ser modular, monitorado e gerido por políticos, em vez de «um iF-ov de serviços».
1) Termos e papéis básicos
Identificação (ID): identificação (user, service, provider).
Autenticação (AuthN): prova de identidade (senha, MFA, certificado).
AuthZ: decisão «pode/não» baseada em políticas e contextos.
PDP/PEP: Policy Decision Point/Policy Enforcement Point (aplica).
IdP: Provedor de identificação (OIDC).
Subject/Resource/Action/Context: quem/a/o que faz/sob quais condições.
2) Arquitetura geral do circuito
[ IdP (OIDC) ]
│ OIDC/OAuth 2. 1 (PKCE, JAR/JARM)
[ Token Service / JWKS / KMS ]
│klyuchi (rotate)
│ JWT/Access/Refresh, mTLS
[API Gateway (PEP)] Solution/Policy ──kesh
│ authN/CSRF/CORS/rate-limit
[ Microservices (PEP)]──PDP (OPA/cedar) ──Policy Store (GitOps)
│audit/metriki
[ Data/Providers ]── service-to-service (mTLS+JWT/Spiffe)
Princípios: centralização da geração de tokens e políticas, aplicações locais; «privilégios mínimos» e delegações explícitas.
3) Autenticação de usuários (OIDC/OAuth 2. 1)
Pattern:- Código Autorization + PKCE (sempre para SPA/Mobile).
- SSO: suporte a IdP externos (SAML/OIDC) para b2b/operadoras.
- MFA: TOTP/WebAuthn/SMS (recomendados WebAuthn e TOTP; SMS — fallback).
- Risk-based Step-Up: para ações sensíveis (retirada de fundos, alteração de adereços) exigir MFA/pe-Auth.
- Refresh Token Rotation + registro RT com detecção de reutilização.
- Nince/State + PKCE, CORS/CSRF rigoroso para os fluxos de navegador.
- Short-lived access tokens (5–15 мин) + silent refresh/RT.
- Device binding (DPoP/mtls-bound tocens) para operações críticas.
json
{
"iss": "https://auth. example. com",
"sub": "user_9f12",
"aud": ["wallet","catalog"],
"exp": 1730385600,
"iat": 1730384700,
"tenant": "brand_eu",
"region": "EE",
"amr": ["pwd, ""webauthn"] ,//authentication methods
"scp": ["wallet:read","bets:place","kyc:status. read"],
"sid": "sess_a1b2c3", // session id
"acr": "urn: mfa: strong "//warranty level
}
4) Serviço de autenticação (mTLS, SPIFFE, JWT)
mTLS entre os serviços + SPIFFE/SPIRE para identificadores de workload 'ov sustentáveis.
Serviço JWT com prazo curto (≤5 min) assinado HSM/KMS; auditoria de emissão.
Audience-scoped: O JWT só serve para um serviço/domínio específico.
Áreas de confiança: serviços de outra região/tenante - PKI e políticas individuais.
5) Modelos de autorização: RBAC, ABAC, ReBAC
RBAC (rol → resolução): simples e transparente (adequado para painéis admins, operadores).
ABAC (atributos de sujeito/recurso/contexto): flexível para as regras "tenant =... AND region=… AND kyc_tier≥2».
ReBAC (relacionamento): útil para propriedades complexas («quem possui marca/pasta/campanha»).
Recomendação: híbrido - RBAC básico + termos ABAC contextuais + relações REBAC pontuais.
6) Políticas e sua execução (PDP/PEP)
PEP no Gateway e nos serviços: extrai o contexto (JWT, mandatos, IP/ASN, tempo, região, nível KYC) e produz o pedido de PDP.
O PDP (por exemplo, OPA/cedar) recebe:json
{
"subject": { "sub":"user_9f12", "roles":["support"], "kyc":2, "tenant":"brand_eu" },
"action": "bets. place",
"resource": { "game_id":"g_42", "provider":"pr_x" },
"context": { "region":"EE", "ip_asn":"AS12345", "time":"2025-10-31T12:34:56Z" }
}
e devolve 'ALLOW/DENY' + explicação.
O dinheiro de soluções PEP (TTL 30-120 c) reduz a latência; deficiência por evento «alterar papéis/políticas».
Exemplo de política (pseudo-rego):rego package bets
default allow = false
allow {
input. action == "bets. place"
input. subject. kyc >= 2 input. subject. tenant == input. context. tenant not blocked_region within_limits
}
blocked_region { input. context. region == "NL" }
within_limits { input. context. bet_amount <= data. limits. max_bet[input. subject. tenant] }
7) Escopos e permissões
Denominação:- Recurso: 'wallet: read', 'wallet: transfer', 'bets: place', 'kyc: status. read`.
- Para os almirantes, 'admin' em um domínio isolado.
- Para provedores - 'provider: relatório. read`, `provider:events. push`.
Princípio de privilégios mínimos: Atribuímos apenas os dados necessários; «escalas» (extensões temporárias) - por tíquete e TTL.
8) Multi-tenante e regiões (residency)
Os tokens contêm «tenant», «region», «licence»; O PDP verifica a conformidade com o recurso.
Papéis/políticas - Espaços de nomes per tenant ('role: brand _ eu/apoio').
Separar as chaves de assinatura e as listas de retirada por região; As solicitações regionais cruzadas são apenas através de passarelas de confiança.
9) Gerenciamento de sessões e dispositivos
O Server-side sessions store para a web (referência ao dispositivo/navegador, rotação de ID).
Idle/Absolute Timeout (por exemplo, 30 min/24 h); ações sensíveis - re-Auth/MFA.
Listagem de dispositivos ativos, «saída de todos».
Anomalias: entradas simultâneas de diferentes regiões, falhas frequentes MFA - sinais de risco.
10) Delegação e consentimento (consent)
On-behalf-of (OBO): o serviço funciona em nome do usuário (proxy-token com "sub "/' act").
Consentimento: tela explícita para acesso de um parceiro aos dados, registro de concordância com a retirada.
Acess-mandates temporários: permissões N horas/dia, caducam automaticamente.
11) Chaves, assinaturas e rotação
JWKS s 'kid', rotação automática, armazenamento de chaves privadas no KMS/HSM.
Algoritmos: ES256/EdDSA para JWT; TLS 1. 2+/mTLS.
Período dual-key: recepção de ambos os 'kid' até que a atualização dos clientes seja concluída.
Uma revisão da RT e da Tocen Introspation para incidentes críticos.
12) Segurança dos aplicativos de clientes
SPA: Authorization Code + PKCE, no `implicit`, строгий CORS/Content-Security-Policy.
Mobile: App Attestation/Device Check-in, armazenamento de segurança RT, proteção contra root/jailbreak.
Desktop: navegador de sistema para login (no embedded web-views), PKCE.
13) Contratos SDK
Evaluate (AuthZ) API:http
POST /authz/evaluate
Authorization: Bearer <access_jwt>
Body: { "action":"bets. place", "resource":{"game_id":"g_42"}, "context":{"bet_amount":5. 0} }
→ 200 { "decision":"ALLOW", "ttlMs":60000, "explain":"kyc>=2, limit ok" }
Token Exchange (OBO):
http
POST /oauth/token grant_type=urn:ietf:params:oauth:grant-type:token-exchange subject_token=<user_jwt>&actor_token=<service_jwt>&audience=wallet
14) Observação e auditoria
Métricas:- `authn_success_rate`/`mfa_challenge_rate`/`mfa_fail_rate`
- `authz_p95_ms`, `authz_denied_rate{reason}`
- `invalid_token_rate`, `jwks_skew_ms`, `rt_reuse_detected`
- Anomalias de entrada (new device, geo-velocity), escopos suspeitos.
- `who/what/when/where/why`, `decision`, `policy_version`, `token_kid`, `client_id`.
- Exportação para complacência (regulador/auditoria de venda).
15) Proteja o perímetro e o cliente
Gateway PEP: rate-limit, bot/assinatura checks, proteção CSRF, CORS rigoroso, HSTS.
Tráfego interno: mTLS + serviços JWT + redes limitadas.
Webhooks/colbecs externos: assinaturas corporais (HMAC/JWS), janelas do tempo, anti-réplicas.
16) Erros típicos
Acesso de longa duração a tokens → vazamento.
Fluxo implícito OAuth para SPA.
Nenhuma rotação de chaves e período Dual-Key.
Papéis em vez de políticas (não é possível auditar/explicar soluções).
Mistura de tenentes/regiões em um único «role» ou «key».
Não há step-up MFA em ações sensíveis.
A caixa de soluções AuthZ sem deficiência para alterações de papéis.
17) Playbooks (runbooks)
1. Comprometer chave de assinatura JWT
Revoke 'kid' imediato, publicar o novo JWKS, forçar deficiência RT/sessão, relatório de auditoria.
2. Massa 'invalid _ tocen'
Verificar o relógio relógio/tempo de vida, relevância JWKS, falhas de kesh.
3. Anomalias de entrada
Incluir aumento de risco, exigir step-up, notificar o usuário, limitar temporariamente os pagamentos.
4. Falha na IdP
Mudar para o dinheiro de sessão/rol-aparelho, limitar novos logins, manter as sessões válidas até TTL.
18) Folha de cheque antes de vender
- OIDC/OAuth 2. 1 com PKCE, AT curto, rotação RT, device binding para operações críticas.
- MFA (WebAuthn/TOTP) e step-up para conclusão/mudança de adereços/rol-escaladas.
- Service-to-service: mTLS+SPIFFE, serviço JWT de curta duração.
- Políticas de AuthZ (RBAC+ABAC/ReBAC) em PDP centralizado; PEP em gateway e serviços.
- A caixa de soluções com deficiência; A auditoria trail é imutável.
- Multi-tenante/regiões: isolamento de chaves/políticas/logs, registro de licenças.
- JWKS/chaves em KMS/HSM, rotação dual-key, monitoramento 'kid'.
- CSRF/CORS/HSTS/Rate-limit/bot-filtros no perímetro.
- Playbooks incidentes, botões de revoke run/rotate/lockdown.
- Conjunto de testes: unit (policies), contracto (SDK/flows), chaos (IdP, JWKS), e2e (step-up, OBO, revoke).
19) Mini-modelos de configuração
Registro Scope (YAML):yaml scopes:
wallet: read: {desc: "Reading balance"}
wallet: transfer: {desc: "Transfer of funds," sensitive: true, step_up: true}
bets: place: {desc: "Bet"}
kyc:status. read: {desc: "KYC status"}
roles:
support:
allow: [wallet:read, kyc:status. read]
finance:
allow: [wallet:read, wallet:transfer]
player:
allow: [bets:place]
Política PDP (condição da região):
yaml deny:
- when: { region: ["NL","BE"] }
actions: ["bets."]
Conclusão
O caminho de autenticação e autorização não é uma biblioteca, mas sim uma plataforma: tocadores curtos e chaves controladas, políticas centralizadas e aplicações locais, multifacetador e step-up, isolamento rigoroso de tenentes/regiões, auditoria e telemetria. Este design torna as mudanças seguras, explicáveis para o regulador e transparentes para o produto - e escalar os mercados e os comandos torna-se uma operação rotineira, não uma proeza.