GH GambleHub

OAuth2/OpenID Connect

OAuth2 ustidagi OIDC - «foydalanuvchi/mijoz kim» ekanligini isbotlashning va APIga qisqa umr ko’radigan kirishni taqdim etishning standart usuli. Platforma yadrosida u markaziy qobiliyatga aylanadi: mijozlar, operatorlar va servislar uchun yagona kirish; eng kam imtiyozlar; o’lchanadigan xavf; mintaqaviy va litsenziya qoidalariga rioya qilish.

1) Maqsad va prinsiplar

«deploy vs enable» bo’linmasi: Kodni alohida o’tkazib, bayroq/siyosat bilan kiriting.
Qisqa yashaydigan tokenlar + xavfsiz yangilanish: sizib chiqqanda zararni kamaytiramiz.
Multi-tenant/mintaqa: barcha artefaktlar’tenant/region/licence’deb belgilanadi.
Tokenlar ustidagi siyosatlar: yechimlarni PDP (RBAC/ABAC), PEP gateway/servislarda bajaradi.
Kanallarni himoya qilish: TLS1. 2 +, iloji bo’lsa mTLS/DPoP, qat’iy CORS/CSRF.
Kuzatish va audit: oqim bo’yicha, mijoz bo’yicha, mintaqa bo’yicha ko’rinish.

2) Oqimlar va ularni qachon qo’llash

Authorization Code + PKCE (SPA/Mobile/Web) - foydalanuvchi loginlari uchun defolt.
Device Authorization (konsollar/TV/CLI) - brauzer boʻlmaganda.
Client Credentials (machine-to-machine) - foydalanuvchisiz servis integratsiyasi.
Token Exchange (RFC 8693, OBO) - xizmat foydalanuvchi nomidan ishlaydi.
CIBA/Back-channel (xohishiga ko’ra) - tahririyatsiz push-autentifikatsiya.

Andoza moslamalar:
  • PAR (Pushed Authorization Requests) - avtorizatsiya parametrlari himoyalangan server kanali orqali uzatiladi.
  • JAR (JWT Secured Authorization) - soʻrov parametrlari imzolangan/shifrlangan.
  • JARM - himoyalangan avtorizatsiya javobi (JWT), almashtirishga chidamli.
  • RAR (Rich Authorization Requests) - kirish huquqiga boy so’rovlar (batafsil ruxsatnomalar).

3) Tokenlar va tamg’alar

Turlari:
  • ID Token (OIDC) - kim kirgan (faqat mijoz/frontga koʻrsatiladi).
  • Access Token (AT) - harakat qilish huquqi (qisqa hayot).
  • Refresh Token (RT) - ATni yangilaydi; faqat ishonchli muhitda saqlanadi.
Muddatlar bo’yicha tavsiyalar:
  • AT: 5-15 daqiqa (web/mobile), 2-5 daqiqa (service-to-service).
  • RT: 7–30 дней (web/mobile) с rotation + reuse detection.
  • ID: ≤ 5 daqiqa
Minimal AT tamg’alari (misol):
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
}

Imzolash: ES256/EdDSA, ochiq kalitlar - JWKSda’kid’va rotatsiya bilan.

4) Sessiyalar konturi va logout

Server-side session для web (cookie `SameSite=Lax/Strict`, `HttpOnly`, `Secure`).
Back-Channel Logout + Front-Channel Logout (OIDC) - barcha mijozlarning sinxron yakuni.
Step-Up MFA: sezgir ta’sirlarda - qayta tekshirish (’acr’ko’tariladi).
Revocation & Introspection: hodisa boʻyicha RT/AT darhol oʻchiriladi.

5) Mijozlar xavfsizligi

Web/SPAs: Authorization Code + PKCE, implicit yo’q; qattiq CORS/Content-Security-Policy.
Mobile: tizim brauzeri (AppAuth), yaxlitlikni tekshirish (App Attestation/DeviceCheck), RT himoyalangan ombor.
Desktop/CLI/TV: Device Flow; RT ni OS-maxfiy saqlash joylarida saqlang.
DPoP yoki mTLS-bound tokens AT’ni qurilma/ulanishga ulash uchun.

6) Servis-k-servis

mTLS + qisqa Service JWT (aud-scoped), KMS/HSM bilan STS beradi.
Workload identifikatsiyalari: SPIFFE/SPIRE.
"Tor-keng" siyosati: "o’rniga aniq audience va scopes.

7) Scope-reyestr va rozilik (consent)

Nomi:’resurs: harakat’-’wallet: read’,’wallet: transfer’,’bets: place’,’kyc: status. read`.

Zanjirlarning koʻrinishi va sezgirligini konfiguratsiya qiling.
Consent screen RAR/Scopesdan yigʻiladi; rozilik tarixini saqlang va sharh berishga ruxsat bering.

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

8) Avtorizatsiya bilan integratsiya (PDP/PEP)

API Gateway’dagi PEP AT/DPoP/mTLSni tasdiqlaydi, kontekstni boyitadi (IP/ASN/region/tenant), PDPga so’rov qiladi.
PDP (OPA/cedar) RBAC/ABAC/ReBAC siyosatini qoʻllaydi va tushuntirish va TTL bilan’ALLOW/DENY’ni qaytaradi.
PEPda (TTL 30-120 s) voqealar bo’yicha nogironligi bo’lgan yechimlar keshi (rollar/qoidalar o’zgarishi).

9) Multi-tenant va hududlar

Barcha tokenlar va sessiyalar’tenant/region/licence’bilan markalanadi; PDP resursga muvofiqlikni tasdiqlaydi.
Alohida JWKS/mintaqalar bo’yicha kalitlar va fikr-mulohazalar ro’yxatlari; kross-mintaqa - ishonchli shlyuzlar orqali.
Ma’lumotlarning rezidentligini cheklash: introspektsiya/revokatsiya kelib chiqqan mintaqada bajariladi.

10) Protokol kuchaytirishlari

PAR + JAR + JARM - avtorizatsiya parametrlari va javoblarini himoya qiladi.
Nonce/State/PKCE - barcha ochiq mijozlar uchun.
Pushed Device Authorization (yuqori xavf ostida).
Minimal markali JWT Access Tokens + introspektsiya orqali tashqi integratsiyalar uchun opaque variant.
FAPI - shunga o’xshash amaliyotlar: qat’iy imzo algoritmlari, TLS/redirect_uri/PKCE talablari.

11) Xatolar va qaytarish siyosati

Javoblarni standartlashtiring:
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`.
Sezgir endpointlar uchun rate-limit (’/token’, ’/introspect’, ’/revoke’), eksponensial backoff.

12) Kuzatuv va audit

Metriklar:
  • `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 (o’zgarmas): tokenlarni berish, huquqlarni kuchaytirish, roziliklarni chaqirib olish, kalitlarni almashtirish.

13) Kalitlarni boshqarish va rotatsiya

JWT imzosi: KMS/HSM, JWKSni’kid’bilan nashr etish.
Dual-key davri: IdP yangilarini imzolaydi, tekshiruvchilar eskisini + yangilarini almashtirishdan oldin qabul qiladi.
Muntazam rotatsiya va shoshilinch revoke; «kid» iste’moli monitoringi.

14) Pleybuklar (runbooks)

1. Imzo kalitini buzish

Darhol revoke’kid’, yangi, fors-nogironlik RT/sessiyalari, audit hisoboti chiqarilsin.

2. Ommaviy’invalid _ token ’/o’sish 401

Tugagan AT soatlari, singan JWKS keshini tekshirish; ’clock _ skew’ toleransini vaqtincha oshirish.

3. RT qayta foydalanish

Seansni blokirovka qilish (’sid’), foydalanuvchini xabardor qilish, yangi kirish uchun step-up talab qilish, tekshirish.

4. IdP qulashi

«read-only avtorizatsiya» rejimini yoqish: amaldagi ATni TTLgacha ushlab turish, yangi loginlarni cheklash, introspektsiya keshini skeyllash.

5. ’/token’ga hujum

rate-limit/bot-filtrlarni kuchaytirish, sezgir mijozlar uchun mTLS/DPoP-ni yoqish, «sovuq» RT-ni alohida segmentga olib chiqish.

15) Test sinovi

Contract: OIDC discovery, JWKS, OpenID provider config.
Security: PKCE/nonce/state majburiy; negative-to’plamlar (almashtirishlar’redirect _ uri’, reuse RT).
Interoperability: mijozlar (web/mobile/CLI), turli vaqt zonalari/lokallar.
Chaos: PAR/JARM nosozligi, JWKS kechikishi, rotated’kid’«uchish».
E2E: step-up MFA, OBO (token exchange), logout (front/back-channel), revoke/rotate.

16) Konfiguratsiya namunalari

OIDC/Authorization Server (YAML parchasi):
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
Scope reyestri:
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) Sotishdan oldingi chek-varaq

  • PKCE/nonce/state kiritilgan; PAR/JAR/JARM aktiv.
  • AT/RT/ID TTL berilgan; RT rotation + reuse detection kiritilgan.
  • Sezgir mijozlar/operatsiyalar uchun DPoP yoki mTLS-binding.
  • JWKS c `kid`; kalitlarni avtomatik ravishda rotatsiya qilish va iste’mol qilish monitoringi.
  • Consent/RAR va xaridlar reyestri; sezgir harakatlar uchun step-up MFA.
  • PDP/PEP integratsiyalashgan, nogironlik yechimlari keshlari.
  • Tokenlarda’tenant/region/licence’mavjud; residency kuzatiladi.
  • Kuzatilganlik: metrika, loglar, trassalar; ’invalid _ token’,’rt _ reuse’,’jwks _ skew’alertlari.
  • Revoke/rotate/lockdown pleybuklari; favqulodda logaut tugmasi.
  • E2E/chaos/interop testlar to’plami stendlarda o’tkazildi.

Xulosa

OAuth2/OIDC platforma qobiliyati sifatida joylashtirish orqali siz oldindan aytib bo’ladigan avtorizatsiya oqimlarini, boshqariladigan tokenlarni, yagona kirish siyosatini va o’lchanadigan xavfni olasiz. Qisqa AT, RT himoyalangan, kalitlarning rotatsiyasi, PAR/JARM/DPoP, rozilik va step-up - bu xavfsizlikni sukut bo’yicha, evolyutsiyani esa jamoalar va sheriklar uchun tez va og’riqsiz qiladigan amaliyotlar.

Contact

Biz bilan bog‘laning

Har qanday savol yoki yordam bo‘yicha bizga murojaat qiling.Doimo yordam berishga tayyormiz.

Integratsiyani boshlash

Email — majburiy. Telegram yoki WhatsApp — ixtiyoriy.

Ismingiz ixtiyoriy
Email ixtiyoriy
Mavzu ixtiyoriy
Xabar ixtiyoriy
Telegram ixtiyoriy
@
Agar Telegram qoldirilgan bo‘lsa — javob Email bilan birga o‘sha yerga ham yuboriladi.
WhatsApp ixtiyoriy
Format: mamlakat kodi va raqam (masalan, +998XXXXXXXX).

Yuborish orqali ma'lumotlaringiz qayta ishlanishiga rozilik bildirasiz.