GH GambleHub

Autenticação API: OAuth2, JWT, HMAC

TL; DR

OAUTH2/OIDC + JWT é um padrão para aplicações de clientes e integrações de servidor com autorizações complexas (scopes/roles/tenants), SSO e TTL de tokens curtos.
Assinaturas HMAC são as melhores opções para webhooks e simples chamadas parceiras «server→server», com verificação determinada e proteção rígida contra replay.
Reforce a segurança: mTLS ou DPoP (sender-constrained tokens), TTL (5-15 min), rotação de chaves (JWKS), refresh-tokens com rotação/anti-reuse, validação rigorosa 'aud/iss/exp/nbf/kid' e policy-as-código gateway.

1) Mapa de soluções: o que aplicar

CenárioRecomendado
Clientes externos (Web/iOS/Android), SSOOAuth2/OIDC: Authorization Code + PKCE
Server↔server (integrações de máquinas)OAUTh2 Clientes Credentals (mTLS/DPoP sempre que possível)
Chamadas parceiras com rotas fixasOAuth2 ou HMAC (se scopes simples)
Webhooks (PSP/antifrode/pagamentos)HMAC assinatura + timstamp + idempotação
Tráfego Interior-OestemTLS + JWT curtos (ou opaque + introspecção)
Transações muito sensíveis (pagamentos)OAUTh2 + mTLS/DPoP, se possível step-up (SCA/3DS)

2) OAuth2/OIDC: fluxos e clientes

2. 1 Fluxo

Código Autorization + PKCE (Web/Mobile): protege o código de autorização contra interceptação.
Cliente Credentals: server↔server sem usuário; scopes - o mínimo necessário.
Data Device: para dispositivos sem navegador.
Refresh Tóquio: somente para clientes de confiança; roteie e inclua o reuse detation.

2. 2 Tipos de cliente

Confidential (servidores, BFF): guardam segredos; use o mTLS.
Público (SPA/mobile): o segredo não pode ser armazenado → PKCE, DPoP, TTL curtos e scopes limitados.

3) JWT: estrutura, prazo, verificação

3. 1 Campos (clims)

Obrigatórios: «iss», «sub», «aud», «exp», «iat», «nbf», «jti», «scope »/« percussões», «tenant», «kid».

3. 2 Prazo de vida

Access tocen: 5-15 minutos.
Refresh tocen: dias/semanas, rotativo a cada troca; Se voltarmos a usar o antigo, bloqueamos a sessão.
Clock skew: tolerância ≤ 60 segundos.

3. 3 JWKS e chaves

Armazenamento de chaves no KMS/Vault, 'kid' é obrigatório.
Duas chaves ativas (rolling), transbordamento a cada 60 ou 90 dias ou no incidente.
Cash JWKS em gateway ≤ 5 minutos, com deficiência automática.

3. 4 Verificação em gateway/serviços

Contrate: assinatura, «aud» (serviços permitidos), «iss», «exp/nbf», lista de bloqueios (revocation).
Não confira os campos do corpo sem a verificação da assinatura; ignore 'alg = none'.

Exemplo de cabeçalho da consulta:

Authorization: Bearer <JWT>
X-Trace-Id: <uuid>

4) Vinculação do tocador ao cliente: mTLS, DPoP

mTLS (TLS certificados de cliente): O token só é emitido e validado se houver um certificado de cliente → o token é inútil fora do vínculo chave + certificado.
DPoP (Demonstration of Proof-Postation): O cliente assina cada pedido com uma chave descartável → proteção contra replay e roubo de token em clientes públicos.
Para rotas críticas (mutações de pagamento) - exigir um dos mecanismos.

5) Autorização: scopes, roles, ABAC

Scopes - ação mínima ('payments: write', 'payouts: status: read').
Roles - unidades para almirantes; não use-os diretamente sem scopes.
ABAC - atributos no tocante ('tenant', 'country', 'kyc _ level', 'risk _ flags') → políticas no gateway/OPA.
Política ao nível da rota/campo (GraphQL) e da operação de domínio (REST/gRPC).

6) assinaturas HMAC: webhooks e parceiros

6. 1 Conceito

Cada integração tem um segredo.

Legenda acima da linha canônica: «timestamp + »\n« + method + »\n «+ path + »\n« + sha256 (body) »

Títulos:

X-Signature: v1=base64(hmac_sha256(secret, canonical_string))
X-Timestamp: 2025-11-03T12:34:56Z
X-Event-Id: 01HF...

Janela do tempo: ≤ 300 segundos; pedidos de «X-Timestamp» vencidos/futuros para recusar.
Idempotidade: Guarde 'X-Event-Id' em TTL (24 h) - Retire a duplicação.

6. 2 Melhores práticas

Segredos em KMS/Vault, rotação a cada 90 dias.
Para clientes públicos HMAC não é adequado (o segredo é escoado); use o OAuth2/DPoP.

7) Proteção contra replay, brute force e vazamentos

Nonce/' jti 'para operações sensíveis; Lista negra de identificadores usados.
Rate/cotas: por chave/cliente/tenante/rota; operações «caras» são quotas individuais.
IP/ASN/Geo allow-lists para parceiros e webhooks.
Conteúdo-tipo allow ('aplicação/json'), limite de tamanho corporal.
Camuflar o PII nos logs; a proibição de logar tokens/segredos.

8) Erros e respostas (formato único)

Estrutura do erro:
json
{
"error": "invalid_token",
"error_description": "expired",
"trace_id": "4e3f-..."
}
Estados:
  • '401' - Não/token nevalida (WWW-Autenticate).
  • '403' - direitos insuficientes (scope/ABAC).
  • '429' - limites/quotas.
  • gRPC: `UNAUTHENTICATED`/`PERMISSION_DENIED`/`RESOURCE_EXHAUSTED`.

9) Políticas de prazos e sessões

Access ≤ 15 min; Refresh - rotação + reuse detation (apresentaram o antigo - uma revisão da sessão).
Webhooks HMAC: assinaturas TTL ≤ 5 min; nova entrega com backoff exponencial.
Revogar a sessão/chave → entrar imediatamente em uma lista de revocação (em dinheiro para gateway ≤ 1 min).

10) Observação e auditoria

Correlação por 'trace _ id '/' span _ id'.
Métricas: auth sucess rate, '401/403/429', latência OIDC/JWKS, taxa de rotação, reuse refresh, proporção de tráfego DPoP/mTLS.
«Quem, quando, com que 'sub/tenant/scope' causou o quê», alterações de chaves/segredos, assinaturas HMAC reprovadas.

11) Incorporação à API Gateway

Validação JWT (JWKS kesh) e OPA/ABAC na entrada.
perfis para clientes/parceiros confiáveis.
Verificação HMAC de webhooks em edge (antes de serviços internos).
Rate/Cota pólis, circuito-breaker para o provedor OIDC (armazenar JWK).
Função-flags: desativação rápida do cliente/chave, alteração do algoritmo de assinatura.

12) Mini-snippets

Pseudo: verificação do JWT

pseudo jwks = cache. getOrFetch(iss + "/.well-known/jwks. json")
key = jwks[kid]
assert verify_signature(jwt, key)
assert aud in ALLOWED_AUDIENCES and iss in TRUSTED_ISSUERS assert now in [nbf-60s, exp+60s]

Pseudo: verificar HMAC webhook

pseudo canonical = timestamp + "\n" + method + "\n" + path + "\n" + sha256(body)
sig = base64(hmac_sha256(secret, canonical))
assert abs(now - timestamp) <= 300 assert not seen(event_id)
assert timingSafeEqual(sig, header["X-Signature"].split("v1=")[1])
markSeen(event_id, ttl=86400)

Exemplo de Políticas Scope (OPA/Rego ideia)

rego allow {
input. jwt. scope[_] == "payments:write"
input. jwt. tenant == input. route. tenant
}

13) Playbooks incidentes

Fuga de chave privada/assinante JWT: reversão de chaves, atualização do JWKS, desativação imediata do antigo ('kid' → deny), deficiência de refresh, logout forçado.
Substituição de webhooks: rotação de segredos, IP allow-list, reforço da janela 'X-Timestamp', reaproveitamento de eventos omitidos.
Replay/Brutfort: incluir DPoP/mTLS em rotas críticas, estreitar quotas, blocos temporários por IP/ASN, incluir 'jti' - bloqueador.
Outage OIDC: degradação de tokens em dinheiro (grace), circuito-breaker do provedor, notificação dos clientes.

14) Folhas de cheque de implementação

Autenticação (mínimo):
  • OAuth2: Code+PKCE (Web/Mobile), Client Credentials (server-to-server)
  • TTL: Access ≤ 15 min, Refresh com rotação e reuse detation
  • JWKS: duas chaves ativas, 'kid', dinheiro ≤ 5 min
  • Webhooks: HMAC v1, 'X-Timestamp', 'X-Event-Id', janela ≤ 300 segundos, Idempotação
  • Sender-constrained: mTLS/DPoP em rotas críticas
  • ABAC/OPA: scopes + tenant/risk em políticas de gateway
  • Rate/Quota и 429; IP/ASN allow-lists para parceiros
  • Auditoria e alertas de (401/403/429, reuse refresh, assinaturas HMAC)
Privacidade/loging:
  • Não logar tokens/segredos/mapas completos de corpo
  • Camuflagem PII; Suporte DSAR; o tempo de armazenamento dos logs é limitado

15) Anti-pattern

'alg = none' ou credibilidade de token sem comprovação de assinatura/JWKS.
Acesso de longa duração (relógio/dia).
Um segredo HMAC comum em todos os parceiros.
Webhooks sem timstamp/idempotação.
Refresh-tokens sem rotação e sem reuse detation.
Falta de 'aud '/' iss' - validação e' kid '- rotação.
Armazenamento de segredos em variáveis de ambiente sem KMS/Vault.

16) NFL/SLO (referências)

OIDC/JWKS disponibilidade ≥ 99. 95% (edge-dinheiro reduz a dependência).
JWT validação suplemento em gateway ≤ 2-5 ms p95.
Erros de autenticação ('401') ≤ 0. 5% do tráfego total (sem contar os bots).
Webhooks assinados: proporção de ≥ 99 credenciadas com sucesso. 9%, média de atraso na entrega ≤ 3 s.

Currículo

Combine os mecanismos OAuth2/OIDC + JWT para usuários e ricos cenários de servidor, HMAC para webhooks/parceiros simples, e para operações críticas para mTLS/DPoP. Mantenha os TTL curtos, as chaves de rotação (JWKS), as políticas ABAC/OPA rigorosas, proteja os contornos contra replay e vazamentos, e automatize tudo ao nível da API Gateway. Assim, a autenticação será previsível, escalável e segura - sem compromissos para a UX e monetização.

Contact

Entrar em contacto

Contacte-nos para qualquer questão ou necessidade de apoio.Estamos sempre prontos para ajudar!

Iniciar integração

O Email é obrigatório. Telegram ou WhatsApp — opcionais.

O seu nome opcional
Email opcional
Assunto opcional
Mensagem opcional
Telegram opcional
@
Se indicar Telegram — responderemos também por lá.
WhatsApp opcional
Formato: +indicativo e número (ex.: +351XXXXXXXXX).

Ao clicar, concorda com o tratamento dos seus dados.