GH GambleHub

API аутентификациясы: OAuth2, JWT, HMAC

TL; DR

OAuth2/OIDC + JWT - күрделі авторизациялы (scopes/roles/tenants), SSO және қысқа TTL токендері бар клиенттік қосымшалар мен серверлік интеграциялар үшін стандарт.
HMAC қолтаңбалары - веб-хаттар мен қарапайым серіктестік қоңыраулар үшін ең жақсы таңдау «сервер → сервер».
Қауіпсіздікті күшейтіңіз: mTLS немесе DPoP (sender-constrained tokens), қысқа TTL (5-15 мин), кілттерді ротациялау (JWKS), ротациялы refresh-токендер/anti-reuse, қатаң валидация 'aud/iss/exp/nbf/kid' және policy-as-code gateway.

1) Шешімдердің картасы: қайда қолдану керек

СкриптҰсынамыз
Сыртқы клиенттер (Web/iOS/Android), SSOOAuth2/OIDC: Authorization Code + PKCE
Сервер, сервер (машиналық интеграция)OAuth2 Client Credentials (mTLS/DPoP мүмкіндігінше)
Тіркелген бағыттары бар серіктестік шақыруларOAuth2 немесе HMAC (егер scopes қарапайым болса)
Вебхактар (PSP/антифрод/төлемдер)HMAC қолтаңба + таймштамп + іспеттілік
Ішкі шығыс-батыс трафигіmTLS + қысқа JWT (немесе opaque + introspection)
Өте сезімтал операциялар (төлемдер)OAuth2 + mTLS/DPoP, мүмкіндігінше step-up (SCA/3DS)

2) OAuth2/OIDC: ағындар және клиенттер

2. 1 Ағындар

Authorization Code + PKCE (Web/Mobile): авторизация кодын ұстап қалудан қорғайды.
Client Credentials: сервері, пайдаланушысы жоқ сервер; scopes - ең аз қажетті.
Device Code: шолғышы жоқ құрылғылар үшін.
Refresh Token: тек сенімді клиенттер үшін; reuse detection бағдарламасын ауыстырыңыз және қосыңыз.

2. 2 Клиенттік түрлері

Confidential (серверлер, BFF): құпияларды сақтайды; mTLS пайдаланыңыз.
Public (SPA/mobile): құпияны сақтауға болмайды → PKCE, DPoP, қысқа TTL және шектеулі scopes.

3) JWT: құрылымы, мерзімі, верификация

3. 1 Өрістер (claims)

Міндетті: 'iss', 'sub', 'aud', 'exp', 'iat', 'nbf', 'jti', 'scope '/' permissions', 'tenant' (егер мультиаренда болса), 'kid'.

3. 2 Өмір сүру мерзімі

Access token: 5-15 минут.
Refresh token: күндер/апталар, әрбір алмасу кезінде ротацияланады; ескісін қайта берген кезде - сессияны оқшаулаймыз.
Clock skew: рұқсат ≤ 60 сек.

3. 3 JWKS және кілттер

Кілттерді KMS/Vault, 'kid' ішінде сақтау міндетті.
Екі белсенді кілт (rolling), 60-90 күнде немесе оқыс оқиға кезінде қайта шығару.
JWKS кэші gateway ≤ 5 минут, автоматты мүгедектігі бар.

3. 4 gateway/сервистерде верификация

Салыстырыңыз: қолтаңба, 'aud' (рұқсат етілген қызметтер), 'iss', 'exp/nbf', бұғаттау тізімі (revocation).
Қолтаңбаны тексермей денедегі өрістерге сенбеңіз; 'alg = none' дегенді елемеңіз.

Сұрау тақырыбының мысалы:

Authorization: Bearer <JWT>
X-Trace-Id: <uuid>

4) Токенді клиентке байланыстыру: mTLS, DPoP

mTLS (TLS клиент сертификаттары): токен тек клиент сертификаты болғанда ғана беріледі және валидацияланады → токен «кілт + сертификат» байланысынан тыс жарамсыз.
DPoP (Demonstration of Proof-of-Possession): клиент әрбір сұрауға бір реттік кілтпен қол қояды → көпшілік клиенттерде токенді ұрлау және replay қорғау.
Күрделі бағыттар үшін (төлем мутациялары) - тетіктердің бірін талап ету.

5) Авторизация: scopes, roles, ABAC

Scopes - ең аз әрекеттер ('payments: write', 'payouts: status: read').
Roles - әкімшілерге арналған агрегаттар; scopesсіз оларды тікелей пайдаланбаңыз.
ABAC - токендегі атрибуттар ('tenant', 'country', 'kyc _ level', 'risk _ flags') → gateway/OPA саясаттары.
Бағыт/өріс деңгейіндегі (GraphQL) және домендік әрекет деңгейіндегі (REST/gRPC) саясат.

6) HMAC-қолтаңбалар: вебхактар мен серіктестер

6. 1 Тұжырымдама

Әрбір интеграцияның өз құпиясы бар.

'timestamp + «\n »+ method + «\n» + path + «\n »+ sha256 (body)'

Тақырыптар:

X-Signature: v1=base64(hmac_sha256(secret, canonical_string))
X-Timestamp: 2025-11-03T12:34:56Z
X-Event-Id: 01HF...

Уақыт терезесі: ≤ 300 сек; 'X-Timestamp' мерзімі өткен/болашағы бар сұраулар қабылданбайды.
Теңсіздік: 'X-Event-Id' -ді TTL-де сақтаңыз (24 сағ) - телнұсқаларды тастаңыз.

6. 2 Үздік тәжірибелер

KMS/Vault құпиялары, әрбір 90 күнде ротация.
HMAC жария клиенттері үшін жарамсыз (құпия жылыстайды); OAuth2/DPoP пайдаланыңыз.

7) Replay, brute force және ағып кетуден қорғау

Nonce/' jti 'сезімтал операцияларға арналған; пайдаланылған идентификаторлардың қара тізімі.
Rate/quotas: кілт/клиент/теңге/бағыт бойынша; «қымбат» операциялар - жеке квоталар.
IP/ASN/Geo allow-lists серіктестер мен вебхуктер үшін.
Content-type allow ('application/json'), дене өлшемінің шегі.
Логтарда PII бүркемелеу; белгілерді/құпияларды логиндеуге тыйым салу.

8) Қателер мен жауаптар (бірыңғай формат)

Қате құрылымы:
json
{
"error": "invalid_token",
"error_description": "expired",
"trace_id": "4e3f-..."
}
Мәртебелері:
  • '401' - жоқ/валид емес токен (WWW-Authenticate).
  • '403' - құқықтар жеткіліксіз (scope/ABAC).
  • '429' - лимиттер/квоталар.
  • gRPC: `UNAUTHENTICATED`/`PERMISSION_DENIED`/`RESOURCE_EXHAUSTED`.

9) Мерзімдер мен сессиялар саясаты

Access ≤ 15 мин; Refresh - ротация + reuse detection (ескісін берді - сессияны қайтарып алды).
HMAC: TTL қолтаңбалары ≤ 5 мин; экспоненциалды backoff қайта жеткізу.
Сессияны/кілтті қайтарып алу → дереу revocation list (gateway кэшіне 1 мин ≤).

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

'trace _ id '/' span _ id' бойынша корреляция.
Метриктер: auth success rate, '401/403/429', OIDC/JWKS жасырындылығы, айналым жиілігі, reuse refresh, трафиктің DPoP/mTLS үлесі.
Аудит-лог: «кім, қашан, қандай 'sub/tenant/scope' не шақырды», кілттердің/құпиялардың өзгеруі, HMAC-тың сәтсіз қолтаңбалары.

11) API Gateway кірістіру

JWT-валидация (JWKS кэш) және шлюздегі OPA/ABAC.
Сенімді клиенттер/серіктестер үшін mTLS профильдері.
HMAC-edge веб-хаттарды тексеру (ішкі сервистерге дейін).
Rate/Quota полистері, OIDC-провайдерге circuit-breaker (JWK кэші).
Feature-flags: клиент/кілтті жылдам ажырату, қолтаңба алгоритмін ауыстыру.

12) Шағын сниппеттер

Жалған: JWT верификациясы

pseudo jwks = cache. getOrFetch(iss + "/.well-known/jwks. json")
key = jwks[kid]
assert verify_signature(jwt, key)
assert aud in ALLOWED_AUDIENCES and iss in TRUSTED_ISSUERS assert now in [nbf-60s, exp+60s]

Псевдо: HMAC вебхукін тексеру

pseudo canonical = timestamp + "\n" + method + "\n" + path + "\n" + sha256(body)
sig = base64(hmac_sha256(secret, canonical))
assert abs(now - timestamp) <= 300 assert not seen(event_id)
assert timingSafeEqual(sig, header["X-Signature"].split("v1=")[1])
markSeen(event_id, ttl=86400)

Scope-саясатының мысалы (OPA/Rego идеясы)

rego allow {
input. jwt. scope[_] == "payments:write"
input. jwt. tenant == input. route. tenant
}

13) Инциденттердің плейбуктері

Жеке кілттің/JWT-қол қоюшының жылыстауы: кілттерді қайта шығару, JWKS жаңарту, ескісін дереу өшіру ('kid' → deny), refresh мүгедектігі, мәжбүрлі logout.
Вебхуктарды ауыстыру: құпияларды ауыстыру, IP allow-list, 'X-Timestamp' терезесін күшейту, өткізілген оқиғаларды қайта жеткізу.
Replay/брутфорс: шекті бағыттарда DPoP/mTLS қосыңыз, квоталардың тарылуы, IP/ASN бойынша уақытша блоктар, 'jti' -блокты қосыңыз.
Outage OIDC: кэштелген токендердің тозуы (grace), провайдердің circuit-breaker, клиенттерге хабарлау.

14) Енгізу чек-парақтары

Аутентификация (минимум):
  • OAuth2: Code+PKCE (Web/Mobile), Client Credentials (server-to-server)
  • TTL: Access ≤ 15 мин, Refresh және reuse detection
  • JWKS: екі белсенді кілт, 'kid', кэш ≤ 5 мин
  • Вебхактар: HMAC v1, 'X-Timestamp', 'X-Event-Id', терезе ≤ 300 сек, іспеттілік
  • Sender-constrained: mTLS/DPoP сындарлы бағыттарда
  • ABAC/OPA: шлюз саясатындағы scopes + tenant/risk
  • Rate/Quota и 429; Серіктестерге арналған IP/ASN allow-lists
  • Аудит және (401/403/429, reuse refresh, HMAC қолдары)
Құпиялылық/логин:
  • Белгілерді/құпияларды/толық карта денелерін логқа алмаңыз
  • PII бүркемелеу; DSAR қолдау; логтарды сақтау мерзімі шектеулі

15) Қарсы үлгілер

'alg = none' немесе/JWKS қолтаңбасын тексермей токенге сенім артыңыз.
Ұзақ өмір сүретін access-токендер (сағат/тәулік).
Барлық серіктестерге ортақ бір HMAC-құпия.
Таймштампсыз/теңсіздіксіз вебхактар.
Refresh-токендер ротациясыз және reuse detection.
'aud '/' iss' -валидацияның және 'kid' -ротацияның болмауы.
Құпияларды KMS/Vault ауыспалы ортасында сақтау.

16) ҰТҚ/SLO (бағдарлар)

OIDC/JWKS қол жетімділік ≥ 99. 95% (edge-кэш тәуелділікті төмендетеді).
JWT валидация қоспасы gateway ≤ 2-5 мс p95.
Аутентификация қатесі ('401') ≤ 0. жалпы трафиктің 5% (боттарды есептемегенде).
Қол қойылған вебхактар: табысты тексерілген ≥ үлесі 99. 9%, жеткізудің орташа кідірісі ≤ 3 с.

Түйіндеме

Механизмдерді біріктіріңіз: OAuth2/OIDC + JWT пайдаланушылар мен бай серверлік сценарийлер үшін, HMAC вебхуктер/қарапайым серіктестер үшін, ал сыни операциялар үшін - mTLS/DPoP. Қысқа TTL, кілт ротацияларын (JWKS), ABAC/OPA қатаң саясатын сақтаңыз, контурларды replay және ағындардан қорғаңыз және бәрін API Gateway деңгейінде автоматтандырыңыз. Осылайша, аутентификация UX және монетизация үшін ымыраға келмейтін, болжамды, масштабталатын және қауіпсіз болады.

Contact

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

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

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

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

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

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