एपीआई प्रमाणीकरण: OAuth2, जेडब्ल्यूटी, एचएमएसी
टीएल; डीआर
OAuth2/OIDC + JWT जटिल प्राधिकरण (स्कोप/भूमिकाएं/किरायेदार), एसएसओ और लघु टीटीएल टोकन के साथ ग्राहक अनुप्रयोगों और सर्वर एकीकरण के लिए एक मानक है।
HMAC हस्ताक्षर वेबहुक और सरल साथी कॉल "-" के लिए सबसे अच्छा विकल्प हैं, जिसमें नियतात्मक सत्यापन और रिप्ले के खिलाफ मजबूत सुरक्षा है।
सुरक्षा को मजबूत करें: mTLS या DPoP (प्रेषक-विवश टोकन), छोटा TTL (5-15 मिनट), कुंजी रोटेशन (JWKS), रोटेशन/एंटी-रीयूज़के साथ रिफ्रेश टोकन, सख्त सत्यापन/iaud/iss/nbf/किड 's/as/as/as-as-as-as कोड़कोड ऑन-as कोड गेटवे।
1) समाधान मानचित्र: कहां से लागू करें
2) OAuth2/OIDC: प्रवाह और ग्राहक
2. 1 प्रवाह
प्राधिकरण कोड + PKCE (वेब/मोबाइल) - प्राधिकरण कोड को अवरोधन से बचाता है।
क्लाइंट क्रेडेंशियल्स: server↔server उपयोगकर्ता के बिना; स्कोप - न्यूनतम आवश्यक।
उपकरण कोड: बिना ब्राउज़र के उपकरणों के लिए।
टोकन ताज़ा करें: केवल विश्वसनीय क्लाइंट के लिए; घुमाएँ और पुन: उपयोग पता लगाने में सक्षम करें।
2. 2 क्लाइंट प्रकार
गोपनीय (सर्वर, बीएफएफ): रहस्य रखें; mTLS का उपयोग करें।
सार्वजनिक (एसपीए/मोबाइल): रहस्य को संग्रहीत नहीं किया जा सकता है - पीकेसीई, डीपीओपी, छोटा टीटीएल और सीमित स्कोप।
3) JWT: संरचना, समय, सत्यापन
3. 1 क्षेत्र (दावे)
अनिवार्य: 'is', 'उप', 'aud', 'exp', 'iat', 'nbf', 'स्कोप '/' अनुमति', 'किरायेदार' (यदि बहु-पट्टा), 'बच्चा'।
3. 2 जीवनकाल
एक्सेस टोकन: 5-15 मिनट।
टोकन ताज़ा करें: दिन/सप्ताह, प्रत्येक एक्सचेंज के साथ घुमाएं; पुराने को फिर से जमा करते समय, हम सत्र को अवरुद्ध करते हैं।
घड़ी तिरछा: सहिष्णुता ≤ 60 एस
3. 3 JWKS और चाबियाँ
केएमएस/वॉल्ट में कुंजियों का भंडारण, 'बच्चा' आवश्यक है।
दो सक्रिय कुंजियाँ (रोलिंग), हर 60-90 दिनों में या किसी घटना में एक बार फिर से जारी की जाती हैं।
ऑटो-विकलांगता के साथ गेटवे ≤ 5 मिनट पर JWKS कैश।
3. 4 गेटवे/सेवाओं पर सत्यापन
जाँचें: हस्ताक्षर, 'aud' (अनुमोदित सेवाएँ), 'iss', 'exp/nbf', ताले की सूची (निरसन)।
हस्ताक्षर की पुष्टि किए बिना शरीर से क्षेत्र पर भरोसा न करें; 'अल्ग = कोई नहीं' की उपेक्षा करें।
निवेदन शीर्षक का उदाहरण:
Authorization: Bearer <JWT>
X-Trace-Id: <uuid>
4) क्लाइंट को बाइंडिंग टोकन: mTLS, DPoP
mTLS (TLS क्लाइंट सर्टिफिकेट): टोकन केवल तभी जारी और मान्य किया जाता है जब कोई क्लाइंट प्रमाणपत्र हो - टोकन कुंजी + प्रमाणपत्र संयोजन के बाहर बेकार है।
DPoP (प्रूफ-ऑफ-पोज़िशन का प्रदर्शन): ग्राहक एक बार की कुंजी के साथ प्रत्येक अनुरोध पर हस्ताक्षर करता है - सार्वजनिक ग्राहकों में रिप्ले और टोकन चोरी के खिलाफ सुरक्षा।
महत्वपूर्ण मार्गों (भुगतान उत्परिवर्तन) के लिए - तंत्र में से एक की आवश्यकता
5) प्राधिकरण: स्कोप, भूमिकाएँ, ABAC
स्कोप - न्यूनतम क्रियाएं ('भुगतान: लिखें', 'भुगतान: स्थिति: पढ़ें')।
भूमिकाएँ - प्रशासन के लिए इकाइयाँ; बिना स्कोप के उन्हें सीधे उपयोग न करें।
ABAC - टोकन में विशेषताएं ('किरायेदार', 'देश', 'kyc _ level', 'जोखिम _ फ्लैग्स') - गेटवे/OPA पर नीतियां।
मार्ग/क्षेत्र स्तर पर नीति (ग्राफक्यूएल) और डोमेन संचालन स्तर पर (आरईएसटी/जीआरपीसी)।
6) एचएमएसी हस्ताक्षर: वेबहूक और भागीदार
6. 1 अवधारणा
प्रत्येक एकीकरण का अपना रहस्य है।
विहित रेखा के ऊपर कैप्शन: 'टाइमस्टैम्प + "é n "+ विधि + "n" + पथ + "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' के साथ अनुरोधों को अस्वीकार करें।
पहचान: TTL (24h) पर 'X-Event-Id' स्टोर करें - डुप्लिकेट को त्यागें।
6. 2 सर्वोत्तम प्र
केएमएस/वॉल्ट में रहस्य, हर 90 दिनों में घूमता है।
सार्वजनिक ग्राहकों के लिए, HMAC उपयुक्त नहीं है (गुप्त लीक); OAuth2/DPoP का उपयोग करें।
7) रिप्ले, क्रूर बल और लीक के खिलाफ सुरक्षा
संवेदनशील संचालन के लिए नॉन/' जेटी '; प्रयुक्त पहचानकर्ताओं की काली सूची।
दर/कोटा: कुंजी/ग्राहक/किरायेदार/मार्ग द्वारा; "महंगा" संचालन अलग कोटा हैं।
IP/ASN/Geo भागीदारों और वेबहूक के लिए अनुमति-सूची।
सामग्री-प्रकार की अनुमति ('अनुप्रयोग/json'), शरीर के आकार की सीमा।
लॉग में पीआईआई मास्किंग; टोकन/रहस्य लॉग करने के लिए निषेध।
8) त्रुटियां और उत्तर (एकल प्रारूप)
त्रुटि संरचना:json
{
"error": "invalid_token",
"error_description": "expired",
"trace_id": "4e3f-..."
}
स्टेटस:
- '401' - कोई/अमान्य टोकन (WWW-Athenticate) नहीं।
- '403' - अपर्याप्त अधिकार (गुंजाइश/ABAC)।
- '429' - लिमिट/कोटा।
- gRPC: 'UNAUTHENTICATED '/' PERMISION _ DENED '/' RESORCE _ EXHAUSTED'।
9) शब्द और सत्र नीतियां
पहुंच ≤ 15 मिनट; ताज़ा - घूर्णन + पुन: उपयोग पहचान (पुराने सत्र रिकॉल जमा किया गया)।
वेबहूक एचएमएसी: टीटीएल हस्ताक्षर ≤ 5 मिनट; घातीय बैकऑफ के साथ बार-बार डिलीवरी।
सत्र/कुंजी निरसन - निरसन सूची में तत्काल प्रवेश (गेटवे 1 मिनट पर कैश)।
10) अवलोकन और लेखा परीक्षा
'trace _ id '/' span _ id' द्वारा सहसंबंध।
मेट्रिक्स: auth सफलता दर, '401/403/429', OIDC/JWKS विलंबता, रोटेशन आवृत्ति, ताज़ा पुन: उपयोग, DPoP/mTLS यातायात का हिस्सा।
ऑडिट लॉग: "कौन, जब, जिसके साथ 'उप/किरायेदार/स्कोप' का कारण बना," कुंजी/गुप्त परिवर्तन, एचएमएसी हस्ताक्षर विफल रहे।
11) गेटवे एपीआई में एम्बेडिंग
प्रवेश द्वार पर 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]
छद्म: 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 अपडेट, पुराने ('बच्चे' → इनकार) की तत्काल अक्षम, विकलांगता ताज़ा, मजबूर लॉगआउट।
वेबहुक का प्रतिस्थापन: रहस्यों का रोटेशन, आईपी अनुमति-सूची, 'एक्स-टाइमस्टैम्प' खिड़की का प्रवर्धन, छूटी हुई घटनाओं की बार-बार डिलीवरी।
रीप्ले/ब्रूट-फोर्स: महत्वपूर्ण मार्गों, संकीर्ण कोटा, आईपी/एएसएन द्वारा अस्थायी ब्लॉक पर डीपीओपी/एमटीएलएस सक्षम करें, 'जेटी' -ब्लॉक सूची सक्षम करें।
आउटेज OIDC: कैश किए गए टोकन (अनुग्रह), सर्किट-ब्रेकर प्रदाता, ग्राहक अधिसूचना का क्षरण।
14) कार्यान्वयन चेकलिस्ट
सत्यापन (न्यूनतम):- : कोड + PKCE (वेब/मोबाइल), क्लाइंट क्रेडेंशियल्स (सर्वर-टू-सर्वर)
- टीटीएल: एक्सेस ≤ 15 मिनट, रोटेशन के साथ रिफ्रेश और पुन: उपयोग का पता लगाना
- JWKS: दो सक्रिय कुंजी, 'बच्चा', कैश ≤ 5 मिनट
- वेबहूक: एचएमएसी वी 1, 'एक्स-टाइमस्टैम्प', 'एक्स-इवेंट-आईडी', विंडो ≤ 300 सेकंड, पहचान
- प्रेषक-विवश: महत्वपूर्ण मार्गों पर mTLS/DPoP
- ABAC/OPA: गेटवे नीतियों में स्कोप + किरायेदार/जोखिम
- दर/कोटा и 429; IP/ASN भागीदारों के लिए अनुमति-सूची
- ऑडिट और अलर्ट -, रिफ्रेश, एचएमएसी हस्ताक्षर पुन: उपयोग करें)
- लॉग टोकन/सीक्रेट/फुल कार्ड बॉडी
- पीआईआई मास्किंग; DSAR समर्थन; लॉग का शेल्फ जीवन सीमित है
15) एंटी-पैटर्न
'alg = no' या हस्ताक्षर सत्यापन/JWKS के बिना एक टोकन पर भरोसा करें।
लंबे समय तक पहुंच टोकन (घंटे/दिन)।
सभी भागीदारों के लिए एक सामान्य एचएमएसी रहस्य।
Timestamp/idempotency के बिना वेबहूक।
रोटेशन के बिना और पुन: उपयोग पता किए बिना टोकन ताज़ा करें।
'aud '/' iss' सत्यापन और 'बच्चे' रोटेशन की कमी।
केएमएस/वॉल्ट के बिना पर्यावरण चर में रहस्यों का भंडारण।
16) एनएफटी/एसएलओ (स्थल)
OIDC/JWKS उपलब्धता ≥ 99। 95% (एज कैश निर्भरता को कम करता है)।
JWT सत्यापन प्रवेश द्वार पर additive 2-5 ms p95।
सत्यापन त्रुटियाँ ('401') ≤ 0। कुल यातायात का 5% (बॉट को छोड़ कर)।
हस्ताक्षरित वेबहुक: सफलतापूर्वक सत्यापित ≥ 99 का हिस्सा। 9%, औसत वितरण देरी ≤ 3 s।
सारांश
संयोजन तंत्र: उपयोगकर्ताओं और समृद्ध सर्वर स्क्रिप्ट के लिए OAuth2/OIDC + JWT, वेबहुक/सरल भागीदारों के लिए HMAC, और महत्वपूर्ण संचालन के लिए - mTLS/DPoP। छोटे टीटीएल, प्रमुख रोटेशन (JWKS), सख्त ABAC/OPA नीतियों को रखें, छोरों को रीप्ले और लीक से बचाएं, और एपीआई गेटवे स्तर पर सब कुछ स्वचालित करें। इसलिए प्रमाणीकरण यूएक्स और मुद्रीकरण के लिए समझौता किए बिना अनुमानित, स्केलेबल और सुरक्षित हो जाएगा।