इसे छोड़कर कंटेंट पर जाएं

सीक्रेट ऑफलोडिंग

MirApi आपके अपस्ट्रीम API क्रेडेंशियल्स को आपके एप्लिकेशन कोड और लॉग्स से बाहर रखने के दो तरीके प्रदान करता है। दोनों तरीके प्रॉक्सी एज पर अपस्ट्रीम रिक्वेस्ट में Authorization हेडर इंजेक्ट करते हैं — आपके बैकएंड कोड को कभी भी प्लेनटेक्स्ट सीक्रेट रखने की ज़रूरत नहीं पड़ती।

विकल्प 1: एफेमेरल पास-थ्रू (X-Identity-Key)

Section titled “विकल्प 1: एफेमेरल पास-थ्रू (X-Identity-Key)”

अपनी API कुंजी X-Identity-Key हेडर में पास करें। MirApi इसे मेमोरी में पढ़ता है, अपस्ट्रीम रिक्वेस्ट में Authorization हेडर के रूप में इंजेक्ट करता है, और इसे किसी भी लॉग या स्थायी स्टोरेज में कभी नहीं लिखता।

Terminal window
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"}'

क्या होता है:

  1. आपके रिक्वेस्ट हेडर से X-Identity-Key: Bearer sk_live_... पढ़ा जाता है
  2. यह हेडर रिक्वेस्ट से हटा दिया जाता है (कभी X-Identity-Key के रूप में फॉरवर्ड नहीं होता)
  3. अपस्ट्रीम रिक्वेस्ट में Authorization: Bearer sk_live_... इंजेक्ट किया जाता है
  4. Stripe को एक मानक Authorization हेडर मिलता है
  5. कुंजी का मान किसी भी लॉग में कभी नहीं लिखा जाता

आपके एप्लिकेशन लॉग्स में आउटबाउंड हेडर का नाम दिख सकता है, लेकिन मान को आपके सीक्रेट्स मैनेजर में ही रखा जाना चाहिए। MirApi के आंतरिक लॉग्स कभी भी हेडर मान रिकॉर्ड नहीं करते।

X-Identity-Key के उपयोग के मामले

Section titled “X-Identity-Key के उपयोग के मामले”
Terminal window
# Stripe payment
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_..." \
-d '{"amount": 2000, "currency": "usd", "source": "tok_visa"}'
# OpenAI chat completion
curl -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 instead
curl 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 “एन्क्रिप्टेड क्रेडेंशियल्स सेट करना”
  1. अपना MirApi डैशबोर्ड खोलें → Credentials → Add Credential
  2. दर्ज करें:
    • Name: एक लेबल (जैसे, stripe-production)
    • Target host pattern: api.stripe.com (या एक सबस्ट्रिंग मिलान)
    • Value: आपकी API कुंजी (sk_live_...)
    • Encryption passphrase: आपकी मास्टर कुंजी
  3. डैशबोर्ड AES-GCM का उपयोग करके मान को एन्क्रिप्ट करता है और केवल सिफरटेक्स्ट स्टोर करता है

एन्क्रिप्टेड क्रेडेंशियल्स का उपयोग

Section titled “एन्क्रिप्टेड क्रेडेंशियल्स का उपयोग”
Terminal window
# 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"}'

गेटवे:

  1. रिक्वेस्ट से X-Proxy-Master-Key पढ़ता है
  2. डेटाबेस में टार्गेट होस्टनेम से मेल खाते क्रेडेंशियल्स खोजता है
  3. प्रदत्त पासफ्रेज़ का उपयोग करके स्टोर किए गए सिफरटेक्स्ट को डिक्रिप्ट करता है
  4. अपस्ट्रीम रिक्वेस्ट में Authorization: Bearer sk_live_... इंजेक्ट करता है
  5. रिक्वेस्ट के बाद पासफ्रेज़ और प्लेनटेक्स्ट मेमोरी से हटा दिए जाते हैं

हेडर और फॉर्मेट ओवरराइड करना (कस्टम हेडर और टेम्पलेट)

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 कुंजी अपेक्षित करता है:

Terminal window
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>

यदि अपस्ट्रीम API को Basic auth की ज़रूरत है:

Terminal window
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 “स्पष्ट क्रेडेंशियल चयन”

यदि एक ही होस्टनेम से मेल खाते कई क्रेडेंशियल्स हैं, तो बताएं कि कौन सा उपयोग करना है:

Terminal window
# Production credential
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: 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 “क्रेडेंशियल रोटेशन”

किसी समझौता किए गए कुंजी को रोटेट करने के लिए केवल डैशबोर्ड अपडेट की ज़रूरत है — कोई कोड परिवर्तन या डिप्लॉयमेंट नहीं:

  1. डैशबोर्ड में क्रेडेंशियल खोजें
  2. नई API कुंजी के साथ मान अपडेट करें (उसी पासफ्रेज़ के साथ पुनः एन्क्रिप्ट किया गया)
  3. सभी भविष्य की रिक्वेस्ट तुरंत नई कुंजी का उपयोग करती हैं

कैस्केड रूटिंग में रूट टार्गेट Auth

Section titled “कैस्केड रूटिंग में रूट टार्गेट Auth”

कैस्केड रूट (X-Route-Key) का उपयोग करते समय, कैस्केड के विभिन्न टार्गेट को अलग-अलग ऑथराइज़ेशन क्रेडेंशियल की ज़रूरत हो सकती है। एकल identity key उपयोग करने के बजाय, आप अपने डेटाबेस में प्रत्येक रूट टार्गेट को उसके अपने credential_id से लिंक कर सकते हैं।

रिक्वेस्ट निष्पादन के दौरान, यदि आप रिक्वेस्ट हेडर में X-Proxy-Master-Key प्रदान करते हैं, तो गेटवे इस मास्टर पासफ्रेज़ का उपयोग करके विशिष्ट टार्गेट क्रेडेंशियल्स को डायनामिक रूप से डिक्रिप्ट करेगा और उस टार्गेट के लिए कॉन्फ़िगर किए गए कस्टम auth_header और auth_template लागू करेगा। विवरण के लिए Cascade Routing गाइड देखें।


X-Identity-KeyX-Proxy-Master-Key
स्टोरेजप्रति-रिक्वेस्ट पास, कभी स्टोर नहींDB में एन्क्रिप्टेड रूप में स्टोर
सेटअपकुछ नहीं — बस हेडर शामिल करेंडैशबोर्ड सेटअप आवश्यक
कुंजी रोटेशनअपने ऐप/सीक्रेट्स मैनेजर में मान बदलेंकेवल MirApi डैशबोर्ड में बदलें
सर्वोत्तम के लिएडेवलपमेंट, सरल सेटअप, या कुंजियाँ जो पहले से आपके सीक्रेट्स मैनेजर में हैंप्रोडक्शन मल्टी-सर्विस परिवेश