GH GambleHub

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

TL; ДР

OAuth2/OIDC + JWT стандарт барои барномаҳои муштарӣ ва ҳамгироии сервер бо иҷозати мураккаб (миқёс/нақш/иҷорагир), SSO ва аломатҳои кӯтоҳи TTL мебошад.
Имзоҳои HMAC интихоби беҳтарин барои вебҳукҳо ва зангҳои шарики оддӣ "сервер → сервер" бо санҷиши детерминистӣ ва муҳофизати қавӣ аз такрорӣ мебошанд.
Мустаҳкамкунии амният: MTLS ё DP okpp (аломатҳои маҳдудкунандаи ирсолкунанда), TTL кӯтоҳ (5-15 дақиқа), гардиши калидҳо (JWKS), нишонаҳои тароват бо ротатсия/истифодаи такрорӣ, санҷиши қатъии 'aud/iss/exp/nbf/kid' ва сиёсат-ас-код дар дарвоза.

1) Харитаи ҳалли: дар куҷо татбиқ кардан лозим аст

СенарияМо тавсия медиҳем
Мизоҷони беруна (Web/IOS/Android), SSOOAuth2/OIDC: Кодекси авторизатсия + PKCE
Server↔server (интегратсияи мошин)OAuth2 Маълумоти муштарӣ (агар имкон бошад, MTLS/DP
Зангҳои шарики собитOAuth2 ё HMAC (агар миқёс оддӣ бошад)
Вебхукҳо (PSP/зидди қаллобӣ/пардохтҳо)Имзои HMAC + timestamp + idempotency
Ҳаракати дохилии Шарқу ҒарбMTLS + JWT кӯтоҳ (ё ношаффоф + интроспексия)
Амалиётҳои хеле ҳассос (пардохтҳо)OAuth2 + MTLS/DP-ро, агар имконпазир бошад (SCA/3DS)

2) OAuth2/OIDC: ҷараёнҳо ва мизоҷон

2. 1 ҷараён

Кодекси авторизатсия + PKCE (Web/Mobile) - Рамзи авторизатсияро аз дахолат муҳофизат мекунад.
Маълумоти муштарӣ: server↔server бе корбар; миқёс - ҳадди аққал лозим аст.
Рамзи дастгоҳ: барои дастгоҳҳои бидуни браузер.
Токенро нав кунед: танҳо барои мизоҷони боэътимод; гардиш кунед ва муайянкунии истифодаи такрорӣ имкон диҳед.

2. 2 Намуди мизоҷ

Махфӣ (серверҳо, BFF): махфӣ нигоҳ доштан; МТЛ-ро истифода баред.
Ҷамъият (SPA/mobile): сирро нигоҳ доштан мумкин нест → PKCE, DP POP, TTL кӯтоҳ ва миқёси маҳдуд.

3) JWT: сохтор, вақт, санҷиш

3. 1 Майдонҳо (даъвоҳо)

Ҳатмӣ: 'iss', 'sub', 'aud', 'exp', 'iat', 'nbf', 'jti', 'доираи '/' иҷозат', 'иҷорагир' (агар иҷора бисёр бошад), 'кӯдак'.

3. 2 Ҳаёт

Аломати дастрасӣ: 5-15 дақиқа.
Аломати нав: рӯзҳо/ҳафтаҳо, бо ҳар мубодила чарх занед; ҳангоми пешниҳоди такрории кӯҳна, мо сессияро бозмедорем.

Нишони соат: таҳаммулпазирӣ ≤ 60 с

3. 3 JWKS ва калидҳо

Нигоҳ доштани калидҳо дар KMS/Vault, 'кӯдак' лозим аст.
Ду калиди фаъол (ғелонда), дар ҳар 60-90 рӯз ё дар ҳодиса як маротиба аз нав чоп карда мешаванд.
Кэши JWKS дар дарвоза ≤ 5 дақиқа, бо маъюбии худкор.

3. 4 Санҷиш дар дарвоза/хидматҳо

Санҷед: имзо, 'aud' (хидматҳои тасдиқшуда), 'iss', 'exp/nbf', рӯйхати қуфлҳо (бекоркунӣ).
Бе тасдиқи имзо ба майдонҳои бадан эътимод накунед; нодида гиред 'alg = ҳеҷ'.

Намунаи сарлавҳаи дархост:

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

4) Аломати ҳатмӣ ба муштарӣ: m

MTLS (шаҳодатномаҳои муштарии TLS): токен танҳо дар сурати мавҷуд будани шаҳодатномаи муштарӣ дода мешавад ва тасдиқ карда мешавад.
DP oP (Намоиши исботи моликият): Муштарӣ ҳар як дархостро бо калиди яквақта → муҳофизат аз такрорӣ ва дуздии нишона дар муштариёни давлатӣ имзо мекунад.
Барои масирҳои интиқодӣ (мутацияҳои пардохт) - яке аз механизмҳоро талаб мекунад.

5) Авторизатсия: миқёс, нақшҳо, ABAC

Соҳаҳо - амалҳои ҳадди аққал ('пардохтҳо: навиштан', 'пардохтҳо: ҳолат: хондан').
Ролҳо - воҳидҳо барои маъмурон; онҳоро мустақиман бе миқёс истифода набаред.
ABAC - хусусиятҳо дар аломати ('иҷорагир', 'кишвар', 'kyc _ level', 'risk _ flags') → сиёсати дарвоза/OPA.
Сиёсат дар сатҳи масир/майдонча (GraphL) ва дар сатҳи амалиёти домейн (REST/GRPC).

6) Имзои HMAC: webhooks ва шарикон

6. 1 Консепсия

Ҳар як ҳамгироӣ сирри худро дорад.

Сарлавҳа дар болои хати каноникӣ: 'timestamp + '\n "+ method + "\n" + path + "\n "+ sha256 (бадан)'

Унвонҳо:

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

Тирезаи вақт: ≤ 300 сония; Дархостҳоро бо мӯҳлати/ояндаи 'X-Timestamp' рад кунед.
Idempotence: Store 'X-Event-Id' -ро дар TTL (24h) нигоҳ доред - нусхаҳои партофташударо партоед.

6. 2 Таҷрибаи беҳтарин

Асрҳо дар KMS/Vault, ҳар 90 рӯз чарх мезананд.
Барои муштариёни давлатӣ, HMAC мувофиқ нест (ихроҷи махфӣ); OAuth2/DPoP истифода баред.

7) Муҳофизат аз такрорӣ, қувваи бераҳмона ва ихроҷ

Nonce/' jti 'барои амалиёти ҳассос; рӯйхати сиёҳи идентификаторҳои истифодашуда.
Меъёр/квота: аз рӯи калид/мизоҷ/иҷорагир/масир; амалиёти "гарон" квотаҳои алоҳида мебошанд.
Рӯйхати иҷозатномаҳои IP/ASN/Geo барои шарикон ва вебҳукҳо.
Иҷозат барои навъи мундариҷа ('ариза/json'), маҳдудияти андозаи бадан.
Ниқоби PII дар гузоришҳо; манъ кардани сабти нишонаҳо/асрҳо.

8) Хатогиҳо ва ҷавобҳо (формати ягона)

Сохтори хатогӣ:
json
{
"error": "invalid_token",
"error_description": "expired",
"trace_id": "4e3f-..."
}
Статусҳо:
  • '401' - аломати беэътибор (WWW-Authenticate).
  • '403' - ҳуқуқҳои нокифоя (миқёс/ABAC).
  • '429' - маҳдудиятҳо/квотаҳо.
  • GRPC: 'UNAUTHENTICATED '/' ИҶОЗАТ _ РАД '/' RESOURCE _ EXHAUSTED'.

9) Сиёсати мӯҳлат ва сессия

Дастрасӣ ≤ 15 дақиқа; Бозсозӣ - гардиш + муайянкунии такрорӣ (пештара - хотиррасонии сеанс пешниҳод шудааст).
Webhooks HMAC: Имзои TTL ≤ 5 дақиқа; таҳвили такрорӣ бо пуштибонии экспоненсиалӣ.
Сессия/бекоркунии калидҳо → воридшавии фаврӣ ба рӯйхати бекоркунӣ (кэш дар дарвоза ≤ 1 дақиқа).

10) Мушоҳида ва аудит

Таносуб аз ҷониби 'trace _ id '/' span _ id'.
Нишондиҳандаҳо: суръати муваффақияти auth, '401/403/429', таъхири OIDC/JWKS, басомади гардиш, аз нав истифода бурдани тароват, ҳиссаи трафики DP MP/M TLS.
Сабти аудит: "кӣ, вақте ки" зер/иҷорагир/миқёс "боиси он шуд, ки" тағироти калидӣ/махфӣ имзоҳои HMAC-ро ноком карданд.

11) Ҷойгиркунӣ дар дарвозаи API

Тасдиқи JWT (кэши JWKS) ва OPA/ABAC дар дарвоза.
Профилҳои MTLS барои мизоҷон/шарикони боэътимод.
Тафтиши HMAC дар канор (пеш аз хидматҳои дохилӣ).
Сиёсати нархгузорӣ/квота, схема дар провайдери OIDC (кэш JWK).
Парчамҳои хусусият: зуд пайваст кардани мизоҷ/калид, тағир додани алгоритми имзо.

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]

Псевдо: санҷиши webhook 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)

Намунаи сиёсати миқёс (идеяи OPA/Rego)

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

13) Китобҳои бозии ҳодиса

Ихроҷи калидҳои хусусӣ/JWT-имзокунанда: азнавсозии калидӣ, навсозии JWKS, фавран хомӯш кардани кӯҳна ('кӯдак' → инкор), таровати маъюбӣ, вуруди маҷбурӣ.
Иваз намудани вебхукҳо: гардиши асрҳо, рӯйхати иҷозатдиҳии IP, тақвияти равзанаи 'X-Timestamp', таҳвили такрории рӯйдодҳои партофташуда.
Такрори/brute-force: имкон диҳед DP jo/P/MTLS дар хатсайрҳои интиқодӣ, квотаҳои танг, блокҳои муваққатӣ аз ҷониби IP/ASN, рӯйхати 'jti' -ро фаъол созед.
OIDC-и барҳамдиҳӣ: таназзули нишонаҳои кэшшуда (файз), провайдери схема, огоҳиномаи муштариён.

14) Рӯйхати санҷишҳои татбиқ

Аутентификатсия (минимум):
  • OAuth2: Code + PKCE (Web/Mobile), Маълумоти муштарӣ (сервер-ба-сервер)
  • TTL: Дастрасӣ ≤ 15 дақиқа, Тароват бо гардиш ва муайянкунии дубора
  • JWKS: ду калиди фаъол, 'кӯдак', кэш ≤ 5 дақиқа
  • Webhooks: HMAC v1, 'X-Timestamp', 'X-Event-Id', тиреза ≤ 300 сония, idempotency
  • Маҳдудияти интиқолдиҳанда: MTLS/DP OP дар хатсайрҳои интиқодӣ
  • ABAC/OPA: миқёс + иҷорагир/хатар дар сиёсати дарвоза
  • Меъёри/Квота и 429; Рӯйхати иҷозатномаҳои IP/ASN барои шарикон
  • Аудит ва огоҳиҳо (401/403/429, аз нав истифода баред, имзоҳои HMAC)
Махфият/сабти ном:
  • Нишонаҳо/асрори/мақомоти пурраи кортро сабт накунед
  • ниқоби PII; Дастгирии DSAR; мӯҳлати нигаҳдории журналҳо маҳдуд аст

15) Анти-намунаҳо

'alg = none' ё ба аломати бидуни санҷиши имзо/JWKS эътимод кунед.
Нишонаҳои дастрасии дарозмуддат (соат/рӯз).
Як сирри умумии HMAC барои ҳамаи шарикон.
Webhooks бе timestamp/idempotency.
Азнавсозии нишонаҳо бе гардиш ва бе муайянкунии такрорӣ.
Набудани тасдиқи 'aud '/' iss' ва гардиши 'кӯдакон'.
Нигоҳ доштани асрори тағирёбандаҳои муҳити зист бидуни KMS/Vault.

16) NFT/SLO (нишонаҳо)

Мавҷудияти OIDC/JWKS ≥ 99. 95% (кэши канорӣ вобастагиро коҳиш медиҳад).
Иловаи тасдиқи JWT дар дарвоза ≤ 2-5 ms p95.
Хатогиҳои аутентификатсия ('401') ≤ 0. 5% трафики умумӣ (ба истиснои ботҳо).
Веб-китобҳои имзошуда: ҳиссаи бомуваффақият санҷидашуда ≥ 99. 9%, таъхири миёнаи интиқол ≤ 3 с.

Хулоса

Механизмҳоро якҷоя кунед: OAuth2/OIDC + JWT барои корбарон ва скриптҳои сервери бой, HMAC барои webhooks/шарикони оддӣ ва барои амалиётҳои муҳим - m TTL-ҳои кӯтоҳ, гардиши калидӣ (JWKS), сиёсати қатъии ABAC/OPA, ҳалқаҳоро аз такрорӣ ва ихроҷ муҳофизат кунед ва ҳама чизро дар сатҳи API Gateway автоматӣ кунед. Ҳамин тавр, аутентификатсия пешгӯишаванда, миқёспазир ва бехатар хоҳад буд - бидуни созиш барои UX ва монетизатсия.

Contact

Тамос гиред

Барои саволҳо е дастгирӣ ба мо муроҷиат кунед.Мо ҳамеша омодаем!

Оғози интегратсия

Email — муҳим аст. Telegram е WhatsApp — ихтиерӣ.

Номи шумо ихтиерӣ
Email ихтиерӣ
Мавзӯъ ихтиерӣ
Паем ихтиерӣ
Telegram ихтиерӣ
@
Агар Telegram нависед — ҷавобро ҳамон ҷо низ мегиред.
WhatsApp ихтиерӣ
Формат: рамзи кишвар + рақам (масалан, +992XXXXXXXXX).

Бо фиристодани форма шумо ба коркарди маълумот розӣ ҳастед.