GH GambleHub

OAuth2/OpenID Connect

OAuth2 үстіндегі OIDC - «пайдаланушы/клиент кім» екенін дәлелдеудің және API-ге қысқа мерзімдік қолжетімділікті берудің стандартты тәсілі. Платформаның өзегінде ол орталық қабілетке айналады: клиенттер, операторлар және сервистер үшін бірыңғай кіру; ең аз артықшылықтар; өлшенетін тәуекел; өңірлік және лицензиялық ережелерді сақтау.

1) Мақсаттар мен қағидаттар

«deploy vs enable» бөлімі: кодты бөлек шығарып, жалаушалармен/саясатпен қосамыз.
Қысқа өмір сүретін токендер + қауіпсіз жаңарту: ағу кезінде залалды азайтамыз.
Мульти-тенант/өңір: барлық артефактілер 'tenant/region/licence' деп белгіленеді.
Токендер үстіндегі саясат: шешімдер PDP (RBAC/ABAC), PEP gateway/сервистерде жасайды.
Арналарды қорғау: TLS1. 2 +, мүмкіндігінше mTLS/DPoP, қатаң CORS/CSRF.
Бақылау және аудит: ағын бойынша, клиент бойынша, өңір бойынша көріну.

2) Ағындар және оларды қашан қолдану

Authorization Code + PKCE (SPA/Mobile/Web) - пайдаланушы логиндері үшін дефолт.
Device Authorization (консольдер/TV/CLI) - шолғыш болмағанда.
Client Credentials (machine-to-machine) - пайдаланушысыз сервистік интеграция.
Token Exchange (RFC 8693, OBO) - сервис пайдаланушының атынан әрекет етеді.
CIBA/Back-channel (қалауы бойынша) - редакторсыз пуш-аутентификация.

Әдепкі қосылатын кеңейтімдер:
  • PAR (Pushed Authorization Requests) - авторизация параметрлері қорғалған сервер арнасы арқылы беріледі.
  • JAR (JWT Secured Authorization) - сұрау параметрлері қол қойылған/шифрланған.
  • JARM - ауыстыруға төзімді қорғалған авторизация жауабы (JWT).
  • RAR (Rich Authorization Requests) - қол жеткізу құқығына бай сұрау салулар (егжей-тегжейлі рұқсаттар).

3) Токендер мен таңбалар

Түрлері:
  • ID Token (OIDC) - кім кірді (тек клиентке/майданға көрсету).
  • Access Token (AT) - әрекет ету құқығы (қысқа өмір).
  • Refresh Token (RT) - АТ жаңартады; тек сенімді ортада сақталады.
Мерзімдер бойынша ұсынымдар:
  • АТ: 5-15 мин (web/mobile), 2-5 мин (service-to-service).
  • RT: 7–30 дней (web/mobile) с rotation + reuse detection.
  • ID: ≤ 5 мин.
АТ ең аз таңбалары (мысал):
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
}

Қол қою: ES256/EdDSA, жария кілттер - JWKS-де 'kid' және ротациясы бар.

4) Сессиялар контуры және logout

Server-side session для web (cookie `SameSite=Lax/Strict`, `HttpOnly`, `Secure`).
Back-Channel Logout + Front-Channel Logout (OIDC) - барлық клиенттердің синхронды аяқталуы.
Step-Up MFA: сезімтал әрекеттерде - қайта тексеру ('acr' жоғарылайды).
Revocation & Introspection: оқиға бойынша RT/AT дереу өшіріледі.

5) Клиенттердің қауіпсіздігі

Web/SPAs: Authorization Code + PKCE, ешқандай implicit; қатаң CORS/Content-Security-Policy.
Mobile: жүйелік браузер (AppAuth), тұтастығын тексеру (App Attestation/DeviceCheck), RT қорғалған сақтау орны.
Desktop/CLI/TV: Device Flow; RT-ті OS құпия қоймаларында сақтаңыз.
АТ құрылғысына/қосылысына байланыстыру үшін DPoP немесе mTLS-bound tokens.

6) Сервис-к-сервисі

mTLS + қысқа Service JWT (aud-scoped), KMS/HSM бар STS береді.
Workload сәйкестігі: SPIFFE/SPIRE.
Саясат "тар": "орнына нақты audience және scopes.

7) Scope-тізілім және келісім (consent)

Атауы: 'ресурс: әрекет' - 'wallet: read', 'wallet: transfer', 'bets: place', 'kyc: status. read`.

Сатып алулардың көрінуі мен сезімталдығын теңшеңіз.
Consent screen RAR/Scopes бағдарламасынан жиналады; келісу тарихын сақтаңыз және кері қайтарып алуға мүмкіндік беріңіз.

RAR мысалы (әмиян → аударма):
json
{
"type":"wallet. transfer",
"actions":["create"],
"locations":["https://api. core/wallet"],
"datatypes":["payment"],
"resources":[{"wallet_id":"w_123","currency":"EUR","amount_max":1000}]
}

8) Авторизациямен интеграция (PDP/PEP)

API Gateway-дегі PEP AT/DPoP/mTLS-ті валидациялайды, контексті байытады (IP/ASN/region/tenant), PDP-ге сұрау салады.
PDP (OPA/cedar) RBAC/ABAC/ReBAC саясатын қолданады және түсіндірме мен TTL-мен 'ALLOW/DENY' қайтарады.
Оқиғалар бойынша мүгедектігі бар PEP (TTL 30-120 с) шешімдерінің кэші (рөлдерді/ережелерді ауыстыру).

9) Мульти-тенант және өңірлер

Барлық токендер мен сессиялар 'tenant/region/licence' деп таңбаланады; PDP ресурсқа сәйкестігін растайды.
Жеке JWKS/кілттер және өңірлер бойынша кері қайтару тізімдері; кросс-өңір - сенімді шлюздер арқылы.
Деректердің резиденттігін шектеу: интроспекция/ревокация шыққан өңірінде орындалады.

10) Хаттамалық күшейтулер

PAR + JAR + JARM - авторизация параметрлері мен жауаптарын қорғайды.
Nonce/State/PKCE - барлық ашық клиенттер үшін.
Pushed Device Authorization (жоғары тәуекел кезінде).
Ең аз таңбалары бар JWT Access Tokens + интроспекция арқылы сыртқы интеграцияға арналған opaque нұсқасы.
FAPI-ұқсас практикалар: қатаң қол қою алгоритмдері, TLS/redirect_uri/PKCE қойылатын талаптар.

11) Қателер және қайтару саясаты

Жауаптарды стандарттаңыз:
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 ('/token ', '/introspect', '/revoke '), экспоненциалды backoff.

12) Бақылау және аудит

Өлшемдері:
  • `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`.
Аудит (өзгермейтін): токендерді беру, құқықтарды эскалациялау, келісімдерді қайтарып алу, кілттерді ротациялау.

13) Кілттерді басқару және ротация

JWT қолы: KMS/HSM, JWKS жариялауы с 'kid'.
Dual-key кезеңі: IdP жаңасына қол қояды, тексерушілер қайта қосылғанға дейін ескісін + жаңасын қабылдайды.
Тұрақты ротация және шұғыл revoke; kid "тұтыну мониторингі.

14) Плейбуктар (runbooks)

1. Қолтаңба кілті

Дереу revoke 'kid', жаңа, форс-мүгедектігі RT/сессиялар, аудит есебін шығару.

2. Массалық 'invalid _ token '/бойы 401

Сағаттардың рассинхронын, өткен АТ, сынған JWKS-кэшін тексеру; 'clock _ skew' деген толерансты уақытша ұлғайту.

3. RT қайта пайдалану

Сессияны бұғаттау ('sid'), пайдаланушыға хабарлау, жаңа кіру үшін step-up талап ету, тексеру.

4. IdP құлдырауы

«read-only авторизациялау» режимін қосу: қолданыстағы АТ-ны TTL-ге дейін ұстап тұру, жаңа логиндерді шектеу, интроспекция кэшін тегістеу.

5. '/token 'дегенге шабуыл жасау

rate-limit/бот-сүзгілерді күшейту, сезімтал клиенттер үшін mTLS/DPoP қосу, жеке сегментке «салқын» RT шығару.

15) Тестілеу

Contract: OIDC discovery, JWKS, OpenID provider config.
Security: PKCE/nonce/state міндетті; negative-жинақтар ('redirect _ uri', reuse RT ауыстыру).
Interoperability: клиенттер (web/mobile/CLI), әртүрлі уақыт белдеулері/локальдар.
Chaos: PAR/JARM істен шығуы, JWKS кідірісі, rotated 'kid' «ұшуда».
E2E: step-up MFA, OBO (token exchange), logout (front/back-channel), revoke/rotate.

16) Конфигурация мысалдары

OIDC/Authorization Server (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
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) Азық-түлік алдындағы чек-парағы

  • PKCE/nonce/state қосылған; PAR/JAR/JARM белсенді.
  • AT/RT/ID TTL берілген; RT rotation + reuse detection қосылған.
  • Сезімтал клиенттер/операциялар үшін DPoP немесе mTLS-binding.
  • JWKS c `kid`; автоматты ротация және кілттерді тұтыну мониторингі.
  • Consent/RAR және сатып алулар тізілімі; сезімтал әрекеттерге арналған MFA step-up.
  • PDP/PEP интеграцияланған, мүгедектігі бар шешімдердің кэші.
  • Токендерде 'tenant/region/licence' бар; residency сақталады.
  • Бақылау қабілеті: метрика, логия, трассировка; 'invalid _ token', 'rt _ reuse', 'jwks _ skew'.
  • revoke/rotate/lockdown-дағы ойнатқыштар; авариялық логаут түймешігі.
  • E2E/chaos/interop тесттер жиынтығы стендтерде өткізілді.

Қорытынды

Платформалық қабілеттілік ретінде OAuth2/OIDC ендіру арқылы сіз болжамды авторизация ағындарын, басқарылатын белгілерді, бірыңғай кіру саясатын және өлшенетін тәуекелді аласыз. Қысқа АТ, RT қорғалған, кілттерді ротациялау, PAR/JARM/DPoP, келісім және step-up - бұл қауіпсіздікті әдепкі ететін, ал эволюцияны командалар мен серіктестерге тез және ауыртпалықсыз ететін тәжірибелер.

Contact

Бізбен байланысыңыз

Кез келген сұрақ немесе қолдау қажет болса, бізге жазыңыз.Біз әрдайым көмектесуге дайынбыз!

Telegram
@Gamble_GC
Интеграцияны бастау

Email — міндетті. Telegram немесе WhatsApp — қосымша.

Сіздің атыңыз міндетті емес
Email міндетті емес
Тақырып міндетті емес
Хабарлама міндетті емес
Telegram міндетті емес
@
Егер Telegram-ды көрсетсеңіз — Email-ге қоса, сол жерге де жауап береміз.
WhatsApp міндетті емес
Пішім: +ел коды және номер (мысалы, +7XXXXXXXXXX).

Батырманы басу арқылы деректерді өңдеуге келісім бересіз.