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

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

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

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

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

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

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