सीक्रेट ऑफलोडिंग
MirApi आपके अपस्ट्रीम API क्रेडेंशियल्स को आपके एप्लिकेशन कोड और लॉग्स से बाहर रखने के दो तरीके प्रदान करता है। दोनों तरीके प्रॉक्सी एज पर अपस्ट्रीम रिक्वेस्ट में Authorization हेडर इंजेक्ट करते हैं — आपके बैकएंड कोड को कभी भी प्लेनटेक्स्ट सीक्रेट रखने की ज़रूरत नहीं पड़ती।
विकल्प 1: एफेमेरल पास-थ्रू (X-Identity-Key)
Section titled “विकल्प 1: एफेमेरल पास-थ्रू (X-Identity-Key)”अपनी API कुंजी X-Identity-Key हेडर में पास करें। MirApi इसे मेमोरी में पढ़ता है, अपस्ट्रीम रिक्वेस्ट में Authorization हेडर के रूप में इंजेक्ट करता है, और इसे किसी भी लॉग या स्थायी स्टोरेज में कभी नहीं लिखता।
curl -X POST https://proxy.mirapi.io/ \ -H "X-MirApi-Key: $MIRAPI_KEY" \ -H "X-Target-URL: https://api.stripe.com/v1/charges" \ -H "X-Identity-Key: Bearer sk_live_xxxxxxxxxxxxxxxxxxxx" \ -H "Content-Type: application/json" \ -d '{"amount": 2000, "currency": "usd", "source": "tok_visa"}'क्या होता है:
- आपके रिक्वेस्ट हेडर से
X-Identity-Key: Bearer sk_live_...पढ़ा जाता है - यह हेडर रिक्वेस्ट से हटा दिया जाता है (कभी
X-Identity-Keyके रूप में फॉरवर्ड नहीं होता) - अपस्ट्रीम रिक्वेस्ट में
Authorization: Bearer sk_live_...इंजेक्ट किया जाता है - Stripe को एक मानक
Authorizationहेडर मिलता है - कुंजी का मान किसी भी लॉग में कभी नहीं लिखा जाता
आपके एप्लिकेशन लॉग्स में आउटबाउंड हेडर का नाम दिख सकता है, लेकिन मान को आपके सीक्रेट्स मैनेजर में ही रखा जाना चाहिए। MirApi के आंतरिक लॉग्स कभी भी हेडर मान रिकॉर्ड नहीं करते।
X-Identity-Key के उपयोग के मामले
Section titled “X-Identity-Key के उपयोग के मामले”# Stripe paymentcurl -X POST https://proxy.mirapi.io/ \ -H "X-MirApi-Key: $MIRAPI_KEY" \ -H "X-Target-URL: https://api.stripe.com/v1/charges" \ -H "X-Identity-Key: Bearer sk_live_..." \ -d '{"amount": 2000, "currency": "usd", "source": "tok_visa"}'
# OpenAI chat completioncurl -X POST https://proxy.mirapi.io/ \ -H "X-MirApi-Key: $MIRAPI_KEY" \ -H "X-Target-URL: https://api.openai.com/v1/chat/completions" \ -H "X-Identity-Key: Bearer sk-proj-..." \ -H "Content-Type: application/json" \ -d '{"model": "gpt-4o", "messages": [{"role": "user", "content": "Hello"}]}'
# Twilio (with Basic auth format)curl -X POST https://proxy.mirapi.io/ \ -H "X-MirApi-Key: $MIRAPI_KEY" \ -H "X-Target-URL: https://api.twilio.com/2010-04-01/Accounts/$ACCOUNT_SID/Messages" \ -H "X-Identity-Key: Basic $TWILIO_B64_CREDENTIALS" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "To=+1234567890&From=+0987654321&Body=Hello"
# Any API that uses a custom API key header — use the header directly insteadcurl https://proxy.mirapi.io/ \ -H "X-MirApi-Key: $MIRAPI_KEY" \ -H "X-Target-URL: https://api.sendgrid.com/v3/mail/send" \ -H "Authorization: Bearer SG.xxx..." # Pass directly if the key isn't secret from logsविकल्प 2: एन्क्रिप्टेड डेटाबेस स्टोरेज (X-Proxy-Master-Key)
Section titled “विकल्प 2: एन्क्रिप्टेड डेटाबेस स्टोरेज (X-Proxy-Master-Key)”अपने अपस्ट्रीम क्रेडेंशियल्स को MirApi डेटाबेस में एन्क्रिप्टेड रूप में स्टोर करें। रिक्वेस्ट के समय, X-Proxy-Master-Key में डिक्रिप्शन पासफ्रेज़ प्रदान करें। गेटवे क्रेडेंशियल को डिक्रिप्ट करके Authorization के रूप में इंजेक्ट करता है — आपका पासफ्रेज़ और प्लेनटेक्स्ट क्रेडेंशियल कभी एक साथ स्टोर नहीं होते।
यह तरीका प्रोडक्शन परिवेशों के लिए अधिक सुरक्षित है क्योंकि:
- आपका एप्लिकेशन केवल मास्टर पासफ्रेज़ स्टोर करता है (अपस्ट्रीम API कुंजियाँ नहीं)
- अपस्ट्रीम क्रेडेंशियल्स को रोटेट करना MirApi डैशबोर्ड में किया जाता है — कोई कोड डिप्लॉयमेंट की ज़रूरत नहीं
- कई क्रेडेंशियल्स को केंद्रीय रूप से प्रबंधित किया जा सकता है
एन्क्रिप्टेड क्रेडेंशियल्स सेट करना
Section titled “एन्क्रिप्टेड क्रेडेंशियल्स सेट करना”- अपना MirApi डैशबोर्ड खोलें → Credentials → Add Credential
- दर्ज करें:
- Name: एक लेबल (जैसे,
stripe-production) - Target host pattern:
api.stripe.com(या एक सबस्ट्रिंग मिलान) - Value: आपकी API कुंजी (
sk_live_...) - Encryption passphrase: आपकी मास्टर कुंजी
- Name: एक लेबल (जैसे,
- डैशबोर्ड AES-GCM का उपयोग करके मान को एन्क्रिप्ट करता है और केवल सिफरटेक्स्ट स्टोर करता है
एन्क्रिप्टेड क्रेडेंशियल्स का उपयोग
Section titled “एन्क्रिप्टेड क्रेडेंशियल्स का उपयोग”# Gateway matches credential by target host ("api.stripe.com" matches the stored pattern)curl -X POST https://proxy.mirapi.io/ \ -H "X-MirApi-Key: $MIRAPI_KEY" \ -H "X-Target-URL: https://api.stripe.com/v1/charges" \ -H "X-Proxy-Master-Key: my-master-passphrase" \ -H "Content-Type: application/json" \ -d '{"amount": 2000, "currency": "usd", "source": "tok_visa"}'गेटवे:
- रिक्वेस्ट से
X-Proxy-Master-Keyपढ़ता है - डेटाबेस में टार्गेट होस्टनेम से मेल खाते क्रेडेंशियल्स खोजता है
- प्रदत्त पासफ्रेज़ का उपयोग करके स्टोर किए गए सिफरटेक्स्ट को डिक्रिप्ट करता है
- अपस्ट्रीम रिक्वेस्ट में
Authorization: Bearer sk_live_...इंजेक्ट करता है - रिक्वेस्ट के बाद पासफ्रेज़ और प्लेनटेक्स्ट मेमोरी से हटा दिए जाते हैं
हेडर और फॉर्मेट ओवरराइड करना (कस्टम हेडर और टेम्पलेट)
Section titled “हेडर और फॉर्मेट ओवरराइड करना (कस्टम हेडर और टेम्पलेट)”डिफ़ॉल्ट रूप से, प्रॉक्सी डिक्रिप्टेड क्रेडेंशियल को Bearer प्रीफिक्स के साथ Authorization हेडर में इंजेक्ट करता है। आप दो वैकल्पिक हेडर का उपयोग करके इस व्यवहार को कस्टमाइज़ कर सकते हैं:
X-Proxy-Auth-Header: डेस्टिनेशन हेडर नाम ओवरराइड करता है (जैसेX-API-Key)।X-Proxy-Auth-Template: मान का फॉर्मेट कस्टमाइज़ करता है। प्लेसहोल्डर{{secret}}को आपकी डिक्रिप्टेड कुंजी से बदल दिया जाएगा।
उदाहरण: कस्टम API Key हेडर (Anthropic)
Section titled “उदाहरण: कस्टम API Key हेडर (Anthropic)”यदि अपस्ट्रीम API X-API-Key में raw कुंजी अपेक्षित करता है:
curl -X POST https://proxy.mirapi.io/v1/messages \ -H "X-MirApi-Key: $MIRAPI_KEY" \ -H "X-Target-URL: https://api.anthropic.com/v1/messages" \ -H "X-Proxy-Master-Key: my-master-passphrase" \ -H "X-Proxy-Auth-Header: X-API-Key" \ -H "X-Proxy-Auth-Template: {{secret}}" \ -H "Content-Type: application/json" \ -d '{"model": "claude-3-5-sonnet", "messages": [{"role": "user", "content": "Hello!"}]}'- अपस्ट्रीम को मिलता है:
X-API-Key: <decrypted_secret>
उदाहरण: Basic Authentication
Section titled “उदाहरण: Basic Authentication”यदि अपस्ट्रीम API को Basic auth की ज़रूरत है:
curl -X GET https://proxy.mirapi.io/v1/accounts \ -H "X-MirApi-Key: $MIRAPI_KEY" \ -H "X-Target-URL: https://api.somebank.com/v1/accounts" \ -H "X-Proxy-Master-Key: my-master-passphrase" \ -H "X-Proxy-Auth-Template: Basic {{secret}}"- अपस्ट्रीम को मिलता है:
Authorization: Basic <decrypted_secret>
स्पष्ट क्रेडेंशियल चयन
Section titled “स्पष्ट क्रेडेंशियल चयन”यदि एक ही होस्टनेम से मेल खाते कई क्रेडेंशियल्स हैं, तो बताएं कि कौन सा उपयोग करना है:
# Production credentialcurl -X POST https://proxy.mirapi.io/ \ -H "X-MirApi-Key: $MIRAPI_KEY" \ -H "X-Target-URL: https://api.stripe.com/v1/charges" \ -H "X-Proxy-Master-Key: my-master-passphrase" \ -H "X-Credential-ID: 4a2e5d18-df99-4d66-a212-3cb5d9f0f9b3" \ -d '{"amount": 2000}'
# Staging credential (different UUID, same passphrase)curl -X POST https://proxy.mirapi.io/ \ -H "X-MirApi-Key: $MIRAPI_KEY" \ -H "X-Target-URL: https://api.stripe.com/v1/charges" \ -H "X-Proxy-Master-Key: my-master-passphrase" \ -H "X-Credential-ID: 9b7c3f21-aa44-4e9d-bc01-1234567890ab" \ -d '{"amount": 100}'क्रेडेंशियल रोटेशन
Section titled “क्रेडेंशियल रोटेशन”किसी समझौता किए गए कुंजी को रोटेट करने के लिए केवल डैशबोर्ड अपडेट की ज़रूरत है — कोई कोड परिवर्तन या डिप्लॉयमेंट नहीं:
- डैशबोर्ड में क्रेडेंशियल खोजें
- नई API कुंजी के साथ मान अपडेट करें (उसी पासफ्रेज़ के साथ पुनः एन्क्रिप्ट किया गया)
- सभी भविष्य की रिक्वेस्ट तुरंत नई कुंजी का उपयोग करती हैं
कैस्केड रूटिंग में रूट टार्गेट Auth
Section titled “कैस्केड रूटिंग में रूट टार्गेट Auth”कैस्केड रूट (X-Route-Key) का उपयोग करते समय, कैस्केड के विभिन्न टार्गेट को अलग-अलग ऑथराइज़ेशन क्रेडेंशियल की ज़रूरत हो सकती है। एकल identity key उपयोग करने के बजाय, आप अपने डेटाबेस में प्रत्येक रूट टार्गेट को उसके अपने credential_id से लिंक कर सकते हैं।
रिक्वेस्ट निष्पादन के दौरान, यदि आप रिक्वेस्ट हेडर में X-Proxy-Master-Key प्रदान करते हैं, तो गेटवे इस मास्टर पासफ्रेज़ का उपयोग करके विशिष्ट टार्गेट क्रेडेंशियल्स को डायनामिक रूप से डिक्रिप्ट करेगा और उस टार्गेट के लिए कॉन्फ़िगर किए गए कस्टम auth_header और auth_template लागू करेगा। विवरण के लिए Cascade Routing गाइड देखें।
X-Identity-Key | X-Proxy-Master-Key | |
|---|---|---|
| स्टोरेज | प्रति-रिक्वेस्ट पास, कभी स्टोर नहीं | DB में एन्क्रिप्टेड रूप में स्टोर |
| सेटअप | कुछ नहीं — बस हेडर शामिल करें | डैशबोर्ड सेटअप आवश्यक |
| कुंजी रोटेशन | अपने ऐप/सीक्रेट्स मैनेजर में मान बदलें | केवल MirApi डैशबोर्ड में बदलें |
| सर्वोत्तम के लिए | डेवलपमेंट, सरल सेटअप, या कुंजियाँ जो पहले से आपके सीक्रेट्स मैनेजर में हैं | प्रोडक्शन मल्टी-सर्विस परिवेश |