API 'OAuth2, JWT, HMAC
TL; DR
OAuth2/OIDC + JWT-ը հաճախորդների ծրագրերի և սերվերային ինտեգրումների համար բարդ հեղինակային (scopes/roles/tenants), SSO-ը և կարճ TTL-ը։
HMAC-ստորագրությունները լավագույն ընտրությունն են Webhuks-ի և պարզ ռուսական զանգերի համար «սերվերի սերվերը» դետերմինացված ստուգմամբ և կոշտ պաշտպանությամբ replay-ից։
Ուժեղացրեք անվտանգությունը ՝ mTSA կամ DPoP (sender-constrained tokens), կարճ TTL (5-15 րոպե), կոդավորման (JWKS), refresh-tocent/anti-reuse-ի հետ, խիստ vaud/is/exp/exp/nbf/kid "և policy-as-code gateway-ում։
1) Որոշումների քարտեզը 'որտեղ օգտագործել
2) OAuth2/OIDC 'հոսքեր և հաճախորդներ։
2. 1 Հոսքեր
Authorization Code + PKCE (Web/Mobile): պաշտպանում է հեղինակային կոդը ընդհատումից։
Client Credentials: սերվերը սերվերը առանց օգտագործողի; scopes-ը նվազագույն անհրաժեշտ է։
Device Code 'սարքերի համար առանց զննարկչի։
Refresh Token 'միայն վստահելի հաճախորդների համար։ կտրեք և միացրեք reuse detae։
2. 2 Հաճախորդների տեսակներ
Systidential (սերվերներ, BFF), պահվում են գաղտնիքները։ օգտագործեք mTSA-ն։
Public (SPA/mobile): գաղտնիքը չի կարելի պահել PKCE, DPoP, կարճ TTL և սահմանափակ scopes։
3) JWT 'կառուցվածք, ժամկետներ, հավատալիքներ,
3. 1 Դաշտեր (claims)
Պարտադիր ՝ «iss», «sub», «aud», «exp», «iat», «nbf», «jti», «scope »/« permissions», «tenae» (եթե multarenda), «kid»։
3. 2 Կյանքի ժամանակը
Deltoken: 5-15 րոպե։
Refresh token: օրեր/շաբաթ, մենք յուրաքանչյուր փոխանակման մեջ ենք, հին - արգելափակման ժամանակ։
Clock skew: 105 3660 վայրկյան։
3. 3 JWKS և բանալիներ
KFC/Vox, «kid» -ը պարտավոր է։
Երկու ակտիվ բանալիներ (rolling), որոնք վերարտադրվել են 60-90 օրվա ընթացքում կամ պատահականության ժամանակ։
Kash JWKS-ը gateway-ում հինգ րոպե է, մեքենա-հաշմանդամությամբ։
3. 4 Հավատարմագրում gateway/ծառայություններում
Կրկնեք ստորագրությունը, «aud» (թույլատրված ծառայություններ), «iss», «exp/nbf», արգելափակումների ցանկը (revocation)։
Մի վստահեք դիագրամներին առանց ստորագրությունը ստուգելու։ անտեսեք 'alg = none "։
Հարցման վերնագրի օրինակ
Authorization: Bearer <JWT>
X-Trace-Id: <uuid>
4) Կապումը պտտվում է հաճախորդի հետ 'mTSA, DPoP
MTSA (TMS հաճախորդների հավաստագրեր) 'հոսքը և վալիդացվում է միայն հաճախորդի հաճախորդի հաճախորդի հաճախորդի հաճախորդների առկայության դեպքում։
DPoP (Demonstration of Proof-of-Possession), հաճախորդը ստորագրում է միանվագ բանալին, որը պաշտպանվում է replay-ից և թափվում է հանրային հաճախորդների մեջ։
Կրիտիկական երթուղիների համար (հիբրիդային մուտացիաներ) - պահանջել մեխանիզմներից մեկը։
5) Հեղինակային իրավունքը 'scopes, roles, ABAC, ABAC
Scopes-ը նվազագույն գործողություններ է ("payments: write", "payouts: status: read ')։
Roles-ը կիսագնդի միավորներ են։ մի օգտագործեք դրանք ուղղակիորեն առանց scopes։
ABAC - ատրիբուտներ տոկենում («tenault», «country», «kyc _ level», «risk _ flags») ռուսական քաղաքականության վրա։
Քաղաքականությունը 2019/դաշտի մակարդակում (GraphQL) և հիբրիդային վիրահատության մակարդակում (REST/gRPC)։
6) HMAC ստորագրությունները 'webhuks և գործընկերներ։
6. 1 Հասկացություն
Յուրաքանչյուր կոմպոզիա ունի իր գաղտնիքը։
Ստորագրությունը կանոնական տողի վրա '"timestamp +" pn "+" method "+" n "+ path +" path + "/n "+ sha256 (body)"
Վերնագրեր
X-Signature: v1=base64(hmac_sha256(secret, canonical_string))
X-Timestamp: 2025-11-03T12:34:56Z
X-Event-Id: 01HF...
Ժամանակի պատուհանը ՝ 3,300 վայրկյան; հարցումները հետաձգված/ապագա 'X-Timestamp' շեղել։
Idempotenty: Պահեք «X-Event-Id» TTL-ում (24 ժամ) - կրկնօրինակեք կրկնօրինակները։
6. 2 Լավագույն պրակտիկա
KFC/Vox-ի գաղտնիքները, յուրաքանչյուր 90 օրվա լուծումը։
Հանրային հաճախորդների համար HMAC-ը հարմար չէ (գաղտնիքը դուրս է գալիս); Օգտագործեք OAuth2/DPoP։
7) Պաշտպանություն replay, brantforce և արտահոսքից
Nonce/« jti »զգայուն վիրահատությունների համար։ օգտագործված ֆոսֆատորների սև ցուցակը։
Rate/www.tas: բանալին/հաճախորդին/tenantu/երթուղին; «թանկ» վիրահատությունները առանձին քվոտաներ են։
IP/ASN/Geo allow-lis.ru գործընկերների և webhuks համար։
Content-type allow («apport/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) Միգրացիայի և նստաշրջանների քաղաքականությունները
Ստանիսլավ 15 րոպե; Refresh-ը + reuse detae-ի լուծարումն է (ներկայացրել են հին 'նստաշրջանի վերանայումը)։
Webhuki HMAC: TTL ստորագրությունները 355 րոպե; կրկնվող առաքում էքսպոնենցիալ backoff-ով։
Նստաշրջանի/ստեղնաշարի վերանայումը ցույց է տալիս վերը նշված հայտնվելը revocation list (cash gateway 241 րոպե)։
10) Դիտողությունն ու աուդիտը
Հարաբերակցություն «trace _ id »/« բանաձև _ id»։
Մետրիկները ՝ auth success rate, «401/403/429», OIDC/JWKS լատենտ, միգրացիայի հաճախականությունը, reuse refresh, DPoP/mTRK մասնաբաժինը։
Աուդիտ-լոգ ․ «Ո՞ վ, երբ, ինչ» sub/ten.ru/sco.ru «-ը զանգահարեց, որ», փոփոխությունը/գաղտնիքները, ձախողված HMAC ստորագրությունները։
11) Հարմարեցում API Gateway-ում
JWT-վալիդացիան (JWKS kes) և OPA/ABAC նավի վրա։
MTLS-ը ավելացված հաճախորդների/գործընկերների համար։
HMAC-վերիֆիկացումը edge-ում (մինչև ներքին ծառայությունները)։
Rate/Delta պոլիսներ, circuit-breaker OIDC պրովայդերի վրա (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 webhuk ստուգում
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)
Scoom քաղաքականության օրինակ (OPA/Rego գաղափար)
rego allow {
input. jwt. scope[_] == "payments:write"
input. jwt. tenant == input. route. tenant
}
13) Պլեյբուկի
Մասնավոր ստեղնաշարի արտահոսքը/JWT-ստորագրությունը 'վերաիմաստավորումը, JWKS-ի նորարարությունը, հին ("kid' deny) անջատումը, refresh հաշմանդամությունը, հարկադիր logout։
Webhuks-ի փոխարինումը 'գաղտնիքների լուծարումը, IP allow-list, ռուսական պատուհանը' X-Timestamp ", բաց թողած իրադարձությունների կրկին առաքումը։
Replay/brutfors: ներառել DPoP/mTSA կրիտիկական երթուղիներում, քվոտաների նեղացումը, IP/ASN-ի ժամանակավոր բլոկները, ներառել «jti »-բլոկլիստը։
Altage OIDC-ը 'կանխված հոսանքների քայքայումը (grace), circuit-breaker պրովայդերը, հաճախորդների ծանուցումը։
14) Ներդրման թերթերը
Վավերացում (նվազագույն)
- OAuth2: Code+PKCE (Web/Mobile), Client Credentials (server-to-server)
- TTL: Lenta.15 րոպե, Refresh-ը և reuse detics-ը։
- JWKS: Երկու ակտիվ բանալին, «kid», kash 245 րոպե։
- Webhuki: HMAC v1, «X-Timestamp», «X-Event-Id», պատուհանը 300 վայրկյան, impotenty «,» X-Timestamp «,» X-Event-Id «, պատուհանը 300 վայրկյան,»
- Sender-constrained: mTSA/DPoP կրիտիկական երթուղիների վրա
- ABAC/OPA: scopes + tenault/risk քաղաքական գործիչներում դարպասի քաղաքական գործիչներում։
- Rate/Quota и 429; IP/ASN allow-lis.ru գործընկերների համար
- Աուդիտ և ալերտներ (401/403/429, reuse refresh, HMAC ստորագրություններ)
Գաղտնիությունը/տրամաբանությունը
- Մի տրամաբանեք հոսանքները/գաղտնիքները/ամբողջական քարտեզների մարմինները
- PII դիմակավորում; DSAR աջակցություն; լոգարանների պահպանման ժամկետը սահմանափակ է
15) Anti-patterna
«alg = none» կամ վստահություն առանց ստորագրության ստուգման/JWKS-ի։
Երկար գոյատևող մետաղադրամներ (ժամացույց/օր)։
Մեկ ընդհանուր HMAC գաղտնիքը բոլոր գործընկերների վրա։
Webhuks առանց timstampa/idempotenty։
Refresh-հոսանքները առանց ռոտացիայի և առանց reuse detae-ի։
«aud »/« iss» ----------- --- ռոտացիաներ։
Գաղտնիքների պահպանումը փոփոխական միջավայրերում առանց KFC/Vance։
16) NFT/SLO (ուղեցույցներ)
OIDC/JWKS հասանելիությունը 3699։ 95% (edge-cash նվազեցնում է կախվածությունը)։
JWT-ը gateway-ի վրա ավելացնում է 2-5 ms p95։
Ռուսական սխալները («401») 240։ Ընդհանուր ծավալի հինգ տոկոսը (բացառությամբ բոտերի)։
Ստորագրված Webhuks 'հաջողակ հավատացյալների թիվ 99 մասը։ 9 տոկոսը, առաքման միջին ուշացումը 3,3 ս է։
Ռեզյումե
Անջատեք մեխանիզմները 'OAuth2/OIDC + JWT օգտագործողների և հարուստ սերվերների համար, HMAC webhuks/պարզ գործընկերների համար, իսկ կրիտիկական վիրահատությունների համար' mTSA/DPoP։ Պահեք կարճ TTL-ը, պարտատոմսերը (JWKS), ABAC/OPA-ի խիստ քաղաքականությունները, պաշտպանեք ուրվագծերը replay և արտահոսքից, և ավտոմատացրեք ամեն ինչ API Gateway մակարդակում։ Այսպիսով, վավերացումը կդառնա կանխատեսելի, մեծացված և անվտանգ, առանց UX փոխզիջումների և մետաղադրամների։