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.
- 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.
- AT: 5-15 daqiqa (web/mobile), 2-5 daqiqa (service-to-service).
- RT: 7–30 дней (web/mobile) с rotation + reuse detection.
- ID: ≤ 5 daqiqa
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.
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.