GH GambleHub

OAuth2/OpenID Connect dans le noyau

OIDC par-dessus OAuth2 - le moyen standard de prouver "qui l'utilisateur/client" et donner короткоживущий l'accès vers API. Au cœur de la plate-forme, il devient une capacité centrale : une seule entrée pour les clients, les opérateurs et les services ; privilèges minimaux ; le risque mesurable ; respect des réglementations régionales et des licences.

1) Objectifs et principes

Séparation de « deploy vs enable » : on déplace le code séparément, on active l'accès par les drapeaux/stratégies.
Les jetons korotkojivouchtchie + la rénovation sûre : nous réduisons le préjudice aux fuites.
Multi-tenant/région : tous les artefacts sont marqués par 'tenant/region/licence'.
Les politiques au-dessus des tokens : les solutions font PDP (RBAC/ABAC), PEP sur gateway/services.
Protection des canaux : TLS1. 2 +, si possible mTLS/DPoP, strict CORS/CSRF.
Observation et audit : visibilité en flux, par client, par région.

2) Les flux et quand les appliquer

Code d'autorisation + PKCE (SPA/Mobile/Web) - défaut pour les logins personnalisés.
Autorisation des appareils (consoles/TV/CLI) - lorsqu'il n'y a pas de navigateur.
Client Credentials (machine-to-machine) - intégrations de service sans utilisateur.
Token Exchange (RFC 8693, OBO) - le service agit au nom de l'utilisateur.
CIBA/Back-channel (facultatif) est une authentification push sans redirection.

Extensions à activer par défaut :
  • PAR (Pushed Autorisation Requests) : Les paramètres d'autorisation sont transmis sur un canal serveur sécurisé.
  • JAR (JWT Secured Autorisation) - Les paramètres de la demande sont signés/cryptés.
  • JARM est une réponse d'autorisation protégée (JWT) résistante aux substitutions.
  • RAR (Rich Autorisation Requests) - Demandes de droits d'accès riches (autorisations détaillées).

3) Tokens et marques

Types :
  • ID Token (OIDC) - qui est entré (montrer uniquement au client/front).
  • Access Token (AT) est un droit d'action (courte vie).
  • Refresh Token (RT) : Met à jour AT ; est stocké uniquement dans un environnement de confiance.
Recommandations sur les délais :
  • AT : 5-15 min (web/mobile), 2-5 min (service-to-service).
  • RT: 7–30 дней (web/mobile) с rotation + reuse detection.
  • ID : ≤ 5 min.
Marque minimale AT (exemple) :
json
{
"iss":"https://auth. core",
"sub":"user_42",
"aud":["wallet","catalog"],
"exp":1730388600,"iat":1730388000,
"tenant":"brand_eu","region":"EE","licence":"EE-A1",
"scp":["wallet:read","bets:place"],     // scopes
"sid ": "sess _ abcd, ""amr": [" pwd,"" webauthn"] ,//login methods
"act":{"sub":"svc. catalog" }//if OBO
}

Signature : ES256/EdDSA, clés publiques - dans JWKS avec 'kid' et rotation.

4) Contour des sessions et logout

Server-side session для web (cookie `SameSite=Lax/Strict`, `HttpOnly`, `Secure`).
Back-Channel Logout + Front-Channel Logout (OIDC) - terminaison synchrone de tous les clients.
Step-Up MFA : en cas d'actions sensibles, un contrôle répété ('acr' est augmenté).
Revocation & Introduction : Désactivation immédiate de RT/AT par incident.

5) Sécurité des clients

Web/SPAs : Code d'autorisation + PKCE, pas d'implicit ; rigoureux CORS/Content-Security-Policy.
Mobile : navigateur système (AppAuth), test d'intégrité (App Attestation/DeviceCheck), stockage sécurisé RT.
Desktop/CLI/TV: Device Flow; Stockez RT dans les coffres-secrets OS.
DPoP ou mTLS-bound tokens pour lier AT au périphérique/connexion.

6) Service-à-service

mTLS + Service court JWT (aud-scoped), délivre un STS avec KMS/HSM.
Identités workload's : SPIFFE/SPIRE.
Politique "étroite à large" : audience spécifique et scopes au lieu de ".

7) Registre Scope et consentement (consent)

Nommage : 'ressource : action' - 'wallet : read', 'wallet : transfer', 'bets : place', 'kyc : status. read`.

Configurer la visibilité et la sensibilité des copeaux.
L'écran de consentement provient de RAR/Scopes ; gardez l'historique des consentements et laissez la révocation.

Exemple de RAR (portefeuille → virement) :
json
{
"type":"wallet. transfer",
"actions":["create"],
"locations":["https://api. core/wallet"],
"datatypes":["payment"],
"resources":[{"wallet_id":"w_123","currency":"EUR","amount_max":1000}]
}

8) Intégration avec autorisation (PDP/PEP)

PEP sur l'API Gateway valide AT/DPoP/mTLS, enrichit le contexte (IP/ASN/région/tenant), fait une requête au PDP.
Le PDP (OPA/cedar) applique les politiques RBAC/ABAC/ReBAC et renvoie « ALLOW/DENY » avec explication et TTL.
Le cache de décision de PEP (TTL 30-120 s) avec un handicap par événement (changement de rôle/règles).

9) Multi-tenants et régions

Tous les jetons et sessions sont marqués « tenant/region/licence » ; Le PDP valide la conformité à la ressource.
JWKS/clés séparées et listes de rappels par région ; la région croisée est à travers des écluses de confiance.
Limitation de la résidence des données : l'introspection/revocation est effectuée dans la région d'origine.

10) Gains de protocole

PAR + JAR + JARM - protègent les paramètres et les réponses d'autorisation.
Nonce/État/PKCE - pour tous les clients publics.
Autorisation des appareils Pushed (à haut risque).
JWT Access Tokens avec un minimum de stigmates + opaque option pour les intégrations externes par introspection.
Pratiques de type FAPI : algorithmes de signature rigoureux, exigences de TLS/redirect_uri/PKCE.

11) Erreurs et politique de retour

Uniformiser les réponses :
json
{ "error":"invalid_grant", "error_description":"refresh token reused", "error_code":"RT_REUSE" }

Критичные коды: `invalid_request`, `invalid_client`, `invalid_grant`, `invalid_scope`, `unauthorized_client`, `access_denied`, `temporarily_unavailable`.
Rate-limit pour les endpoints sensibles ('/token ', '/introspect', '/revoke '), backoff exponentiel.

12) Observation et audit

Métriques :
  • `auth_code_success_rate`, `pkce_missing_rate`, `mfa_challenge/fail_rate`,
  • `token_issuance_p95_ms`, `jwks_skew_ms`, `invalid_token_rate`, `rt_reuse_detected`,
  • по API: `authz_p95_ms`, `deny_rate{reason}`, `dpop_mismatch_rate`, `mtls_fail_rate`.

Логи/трейсы: `client_id`, `grant_type`, `kid`, `acr/amr`, `tenant/region`, `decision`, `policy_version`, `aud`, `scp`, `sid`, `trace_id`.
Audit (immuable) : émission de tokens, escalade des droits, retrait des consentements, rotation des clés.

13) Gestion des clés et rotation

Signature JWT : KMS/HSM, publication JWKS avec 'kid'.
Période dual-key : IdP signe nouveau, les vérificateurs acceptent l'ancien + nouveau avant de basculer.
Rotation régulière et revoke d'urgence ; surveillance de la consommation de 'kid'.

14) Pleybooks (runbooks)

1. Compromis de la clé de signature

Immédiatement revoke 'kid', libérer un nouveau RT/sessions force-invalidation, rapport à l'audit.

2. Masse 'invalid _ token '/hauteur 401

Vérifier la disynchrone de l'horloge expirée AT, cassée JWKS-cache ; augmenter temporairement tolerance 'clock _ skew'.

3. Réutilisation de RT

Bloquer la session ('sid'), avertir l'utilisateur, exiger step-up pour une nouvelle connexion, enquête.

4. Chute de l'IdP

Activer le mode « read-only autorisation » : garder les AT en vigueur jusqu'à la TTL, limiter les nouveaux identifiants, scanner le cache d'introspection.

5. Attaque sur '/token'

Renforcer les filtres rate-limit/bot, inclure mTLS/DPoP pour les clients sensibles, mettre les RT « froids » dans un segment distinct.

15) Tests

Contract: OIDC discovery, JWKS, OpenID provider config.
Sécurité : PKCE/nonce/état sont obligatoires ; jeux negative (substitutions de « redirect _ uri », rouse RT).
Interoperability : clients (web/mobile/CLI), fuseaux horaires différents/locals.
Chaos : échec PAR/JARM, retards JWKS, rotated 'kid' « à la volée ».
E2E: step-up MFA, OBO (token exchange), logout (front/back-channel), revoke/rotate.

16) Exemples de configurations

OIDC/Serveur d'autorisation (fragment YAML) :
yaml issuer: https://auth. core jwks:
rotation_days: 30 alg: ES256 tokens:
access_ttl: 10m refresh_ttl: 14d id_ttl: 5m policies:
require_pkce: true require_par: true require_jarm: true dpop_enabled: true mfa_step_up:
actions: ["wallet:transfer","payout:initiate"]
tenancy:
include_claims: ["tenant","region","licence"]
jwks_per_region: true
Registre Scope :
yaml scopes:
wallet: read: {desc: "Reading balance"}
wallet: transfer: {desc: "Transfer of funds," sensitive: true, step_up: true}
bets: place: {desc: "Betting"}
kyc:status. read: {desc: "KYC status"}
roles:
player: { allow: [bets:place] }
support: { allow: [wallet:read, kyc:status. read] }
finance: { allow: [wallet:read, wallet:transfer] }

17) Chèque-liste avant la vente

  • Inclus PKCE/nonce/état ; PAR/JAR/JARM sont actifs.
  • Les TTL AT/RT/ID sont spécifiés ; RT rotation + reuse detection incluse.
  • DPoP ou mTLS-binding pour les clients/opérations sensibles.
  • JWKS c `kid`; rotation automatique et surveillance de la consommation de clés.
  • Conseil/RAR et registre des scoops ; step-up MFA pour les actions sensibles.
  • Les PDP/PEP sont intégrés, cache des solutions pour personnes handicapées.
  • Les tokens contiennent « tenant/region/licence » ; la résidence est respectée.
  • Observabilité : métriques, logs, traçage ; alerties sur 'invalid _ token', 'rt _ reuse', 'jwks _ skew'.
  • Pleybooks en revoke/rotate/lockdown ; bouton de logout d'urgence.
  • Ensemble de tests E2E/chaos/interop effectués sur des stands.

Conclusion

En intégrant la OAuth2/OIDC en tant que capacité de plateforme, vous obtenez des flux d'autorisation prévisibles, des tokens gérés, des politiques d'accès uniques et un risque mesurable. Court AT, sécurisé RT, rotation des clés, PAR/JARM/DPoP, consentement et step-up sont les pratiques qui rendent la sécurité par défaut, et l'évolution est rapide et indolore pour les équipes et les partenaires.

Contact

Prendre contact

Contactez-nous pour toute question ou demande d’assistance.Nous sommes toujours prêts à vous aider !

Commencer l’intégration

L’Email est obligatoire. Telegram ou WhatsApp — optionnels.

Votre nom optionnel
Email optionnel
Objet optionnel
Message optionnel
Telegram optionnel
@
Si vous indiquez Telegram — nous vous répondrons aussi là-bas.
WhatsApp optionnel
Format : +code pays et numéro (ex. +33XXXXXXXXX).

En cliquant sur ce bouton, vous acceptez le traitement de vos données.