एपीआई कुंजियों की मदद से एपीआई को सुरक्षित करें

आपको Apigee Edge का दस्तावेज़ दिख रहा है.
Apigee X के दस्तावेज़ पर जाएं.
जानकारी

आपको क्या सीखने को मिलेगा

इस ट्यूटोरियल में, आपको इनके बारे में जानकारी मिलेगी:

  • एक ऐसा एपीआई प्रॉक्सी बनाएं जिसके लिए एपीआई पासकोड की ज़रूरत हो.
  • कोई एपीआई प्रॉडक्ट जोड़ें.
  • डेवलपर जोड़ें और ऐप्लिकेशन रजिस्टर करें.
  • एपीआई पासकोड का इस्तेमाल करके, अपने एपीआई को कॉल करें.

अपने एपीआई को बिना अनुमति के ऐक्सेस करने से बचाना ज़रूरी है. ऐसा करने का एक तरीका एपीआई पासकोड का इस्तेमाल करना है. इन्हें सार्वजनिक पासकोड, उपयोगकर्ता के पासकोड या ऐप्लिकेशन के पासकोड भी कहा जाता है.

जब कोई ऐप्लिकेशन आपके एपीआई के लिए अनुरोध करता है, तो उसे एक मान्य पासकोड देना होगा. रनटाइम के दौरान, Verify API Key नीति यह जांच करती है कि सबमिट किया गया एपीआई पासकोड:

  • मान्य है
  • रद्द न किया गया हो
  • यह एपीआई पासकोड, उस एपीआई प्रॉडक्ट के एपीआई पासकोड से मेल खाता है जो अनुरोध किए गए संसाधनों को दिखाता है

अगर कुंजी मान्य है, तो अनुरोध को स्वीकार कर लिया जाता है. अगर कुंजी अमान्य है, तो अनुरोध पूरा नहीं किया जा सकता.

इस ट्यूटोरियल में, आपको एक ऐसा एपीआई प्रॉक्सी बनाना है जिसे ऐक्सेस करने के लिए, मान्य एपीआई कुंजी की ज़रूरत होती है.

आपको किन चीज़ों की ज़रूरत होगी

  • Apigee Edge खाता. अगर आपके पास अब तक कोई खाता नहीं है, तो Apigee Edge खाता बनाने के निर्देशों का पालन करके साइन अप करें.
  • एपीआई कॉल करने के लिए, वेब ब्राउज़र.
  • (ज़्यादा क्रेडिट वाले सेक्शन के लिए, इसकी ज़रूरत नहीं है) कमांड लाइन से एपीआई कॉल करने के लिए, आपकी मशीन पर cURL इंस्टॉल होना चाहिए.

एपीआई प्रॉक्सी बनाना

'mocktarget' के बारे में जानकारी

mocktarget सेवा को Apigee पर होस्ट किया जाता है. यह सेवा सामान्य डेटा दिखाती है. इसके लिए, किसी एपीआई पासकोड या ऐक्सेस टोकन की ज़रूरत नहीं होती. असल में, इसे वेब ब्राउज़र में भी ऐक्सेस किया जा सकता है. इसे आज़माने के लिए, यहां क्लिक करें:

http://mocktarget.apigee.net

टारगेट Hello, Guest! दिखाता है. उपलब्ध अन्य एपीआई संसाधनों का सहायता पेज पाने के लिए, /help संसाधन का इस्तेमाल करें

  1. https://apigee.com/edge पर जाएं और साइन इन करें.
  2. आपको जिस संगठन पर स्विच करना है उस पर स्विच करें. इसके लिए, साइड नेविगेशन बार में सबसे ऊपर मौजूद अपने उपयोगकर्ता नाम पर क्लिक करें. इससे उपयोगकर्ता प्रोफ़ाइल मेन्यू दिखेगा. इसके बाद, सूची से संगठन चुनें.

    उपयोगकर्ता प्रोफ़ाइल मेन्यू में जाकर, संगठन चुनें
  3. एपीआई प्रॉक्सी की सूची देखने के लिए, लैंडिंग पेज पर एपीआई प्रॉक्सी पर क्लिक करें.

    Edge APIs मेन्यू
  4. + प्रॉक्सी पर क्लिक करें.
    प्रॉक्सी बनाएं बटन
  5. प्रॉक्सी बनाएं पेज पर, रिवर्स प्रॉक्सी (सबसे ज़्यादा इस्तेमाल की जाने वाली) को चुनें.
  6. प्रॉक्सी की जानकारी पेज पर, प्रॉक्सी को इस तरह कॉन्फ़िगर करें:
    इस फ़ील्ड में यह करें
    प्रॉक्सी का नाम helloworld_apikey डालें
    प्रोजेक्ट का बेस पाथ

    बदलकर इसे चुनें: /helloapikey

    प्रोजेक्ट का बेस पाथ, यूआरएल का वह हिस्सा होता है जिसका इस्तेमाल एपीआई प्रॉक्सी से अनुरोध करने के लिए किया जाता है.

    ध्यान दें: एपीआई वर्शनिंग के बारे में Apigee के सुझावों के लिए, वेब एपीआई डिज़ाइन: द मिसिंग लिंक ई-बुक में वर्शनिंग देखें.

    मौजूदा एपीआई

    http://mocktarget.apigee.net डालें

    इससे उस टारगेट यूआरएल के बारे में पता चलता है जिसे Apigee Edge, एपीआई प्रॉक्सी के अनुरोध पर शुरू करता है.

    ब्यौरा hello world protected by API key डालें
  7. आगे बढ़ें पर क्लिक करें.
  8. सामान्य नीतियां पेज पर, सुरक्षा: अनुमति के लिए, एपीआई पासकोड चुनें. इसके बाद, आगे बढ़ें पर क्लिक करें. इससे आपकी एपीआई प्रॉक्सी में दो नीतियां जुड़ जाएंगी.
  9. वर्चुअल होस्ट पेज पर, default और secure को चुनें. इसके बाद, आगे बढ़ें पर क्लिक करें. डिफ़ॉल्ट चुनने पर, http:// की मदद से एपीआई को कॉल किया जा सकता है. secure चुनने पर, https:// की मदद से अपने एपीआई को कॉल किया जा सकता है.
  10. खास जानकारी पेज पर, पक्का करें कि टेस्ट डिप्लॉयमेंट एनवायरमेंट चुना गया हो. इसके बाद, बनाएं और डिप्लॉय करें पर क्लिक करें.
  11. आपको एक सूचना दिखेगी. इसमें बताया जाएगा कि आपकी नई एपीआई प्रॉक्सी और एपीआई प्रॉडक्ट को बना दिया गया है. साथ ही, एपीआई प्रॉक्सी को आपके टेस्ट एनवायरमेंट में डिप्लॉय कर दिया गया है.
  12. एपीआई प्रॉक्सी के लिए खास जानकारी पेज दिखाने के लिए, प्रॉक्सी में बदलाव करें पर क्लिक करें.

नीतियां देखना

  1. एपीआई प्रॉक्सी एडिटर में, Develop टैब पर क्लिक करें. आपको दिखेगा कि एपीआई प्रॉक्सी के अनुरोध फ़्लो में दो नीतियां जोड़ी गई हैं:
    • एपीआई पासकोड की पुष्टि करना: इससे एपीआई कॉल की जांच की जाती है, ताकि यह पक्का किया जा सके कि कोई मान्य एपीआई पासकोड मौजूद है. इसे क्वेरी पैरामीटर के तौर पर भेजा जाता है.
    • Remove Query Param apikey: यह AssignMessage नीति, एपीआई कुंजी की जांच हो जाने के बाद उसे हटा देती है, ताकि उसे इधर-उधर न भेजा जाए और वह बिना वजह ज़ाहिर न हो.
  2. फ़्लो व्यू में, 'एपीआई पासकोड की पुष्टि करें' नीति वाले आइकॉन पर क्लिक करें. इसके बाद, नीचे दिए गए कोड व्यू में नीति का एक्सएमएल कॉन्फ़िगरेशन देखें. <APIKey> एलिमेंट, नीति को यह बताता है कि कॉल किए जाने पर, उसे एपीआई कुंजी कहां ढूंढनी चाहिए. डिफ़ॉल्ट रूप से, यह एचटीटीपी अनुरोध में apikey नाम के क्वेरी पैरामीटर के तौर पर कुंजी ढूंढता है:

    <APIKey ref="request.queryparam.apikey" />

    नाम apikey कोई भी हो सकता है. यह ऐसी कोई भी प्रॉपर्टी हो सकती है जिसमें एपीआई पासकोड शामिल हो.

एपीआई को कॉल करने की कोशिश करें

इस चरण में, आपको सीधे तौर पर टारगेट सेवा को एपीआई कॉल करना होगा. इसके बाद, आपको एपीआई प्रॉक्सी को कॉल करना होगा. इससे आपको यह पता चलेगा कि नीतियों के ज़रिए इसे कैसे सुरक्षित किया जा रहा है.

  1. सफल

    किसी वेब ब्राउज़र में, इस पते पर जाएं. यह टारगेट सेवा है. एपीआई प्रॉक्सी को इस सेवा पर अनुरोध फ़ॉरवर्ड करने के लिए कॉन्फ़िगर किया गया है. हालांकि, फ़िलहाल आपको सीधे तौर पर इस सेवा का इस्तेमाल करना होगा:

    http://mocktarget.apigee.net

    आपको यह जवाब मिलेगा: Hello, Guest!

  2. Failure

    अब अपनी एपीआई प्रॉक्सी को कॉल करने की कोशिश करें:

    http://ORG_NAME-test.apigee.net/helloapikey

    ORG_NAME की जगह अपने Edge संगठन का नाम डालें.

    Verify API Key नीति के बिना, इस कॉल से आपको वही जवाब मिलेगा जो पिछले कॉल से मिला था. हालांकि, इस मामले में आपको गड़बड़ी का यह जवाब मिलेगा:

    {"fault":{"faultstring":"Failed to resolve API Key variable request.queryparam.apikey","detail":{"errorcode":"steps.oauth.v2.FailedToResolveAPIKey"}}}

    इसका मतलब है कि आपने क्वेरी पैरामीटर के तौर पर, मान्य एपीआई पासकोड नहीं डाला है.

अगले चरणों में, आपको एक एपीआई प्रॉडक्ट जोड़ना होगा.

कोई एपीआई प्रॉडक्ट जोड़ना

Apigee के यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करके, एपीआई प्रॉडक्ट जोड़ने के लिए:

  1. पब्लिश करें > एपीआई प्रॉडक्ट चुनें.
  2. +एपीआई प्रॉडक्ट पर क्लिक करें.
  3. अपने एपीआई प्रॉडक्ट के लिए, प्रॉडक्ट की जानकारी डालें.

    फ़ील्ड ब्यौरा
    नाम एपीआई प्रॉडक्ट का इंटरनल नाम. नाम में खास वर्णों का इस्तेमाल न करें.
    ध्यान दें: एपीआई प्रॉडक्ट बनाने के बाद, उसके नाम में बदलाव नहीं किया जा सकता. उदाहरण के लिए, helloworld_apikey-Product.
    डिसप्ले नेम एपीआई प्रॉडक्ट का डिसप्ले नेम. डिसप्ले नेम का इस्तेमाल यूज़र इंटरफ़ेस (यूआई) में किया जाता है. इसमें कभी भी बदलाव किया जा सकता है. अगर यह जानकारी नहीं दी जाती है, तो नाम की वैल्यू का इस्तेमाल किया जाएगा. यह फ़ील्ड, नाम की वैल्यू का इस्तेमाल करके अपने-आप भर जाता है. हालांकि, इसके कॉन्टेंट में बदलाव किया जा सकता है या इसे मिटाया जा सकता है. डिसप्ले नेम में खास वर्ण शामिल किए जा सकते हैं. उदाहरण के लिए, helloworld_apikey-Product.
    ब्यौरा एपीआई प्रॉडक्ट का ब्यौरा. उदाहरण के लिए, Test product for tutorial.
    परिवेश ऐसे एनवायरमेंट जिन्हें एपीआई प्रॉडक्ट ऐक्सेस करने की अनुमति देगा. उदाहरण के लिए, test या prod.
    ऐक्सेस सार्वजनिक को चुनें.
    ऐक्सेस के अनुरोध अपने-आप स्वीकार हो जाएं किसी भी ऐप्लिकेशन से इस एपीआई प्रॉडक्ट के लिए, कुंजी के अनुरोधों को अपने-आप मंज़ूरी मिलने की सुविधा चालू करें.
    कोटा इस ट्यूटोरियल के लिए अनदेखा करें.
    अनुमति वाले OAuth स्कोप इस ट्यूटोरियल के लिए अनदेखा करें.
  4. एपीआई संसाधन सेक्शन में, वह एपीआई प्रॉक्सी चुनें जिसे आपने अभी-अभी बनाया है. उदाहरण के लिए, helloworld_apikey.
  5. जोड़ें पर क्लिक करें.
  6. पाथ सेक्शन में, "/" पाथ जोड़ें.
  7. जोड़ें पर क्लिक करें.
  8. सेव करें पर क्लिक करें.

अगले चरणों में, आपको ज़रूरी एपीआई पासकोड मिलेगा.

अपने संगठन में डेवलपर और ऐप्लिकेशन जोड़ना

इसके बाद, हम यह दिखाएंगे कि डेवलपर आपके एपीआई का इस्तेमाल करने के लिए कैसे साइन अप करता है. डेवलपर के पास एक या उससे ज़्यादा ऐसे ऐप्लिकेशन होंगे जो आपके एपीआई को कॉल करते हैं. साथ ही, हर ऐप्लिकेशन को एक यूनीक एपीआई पासकोड मिलता है. इससे, एपीआई उपलब्ध कराने वाली कंपनी को अपने एपीआई के ऐक्सेस पर ज़्यादा कंट्रोल मिलता है. साथ ही, ऐप्लिकेशन के हिसाब से एपीआई ट्रैफ़िक की ज़्यादा जानकारी वाली रिपोर्ट मिलती है.

डेवलपर बनाना

डेवलपर बनाने के लिए:

  1. मेन्यू में जाकर, पब्लिश करें > डेवलपर चुनें.
  2. + डेवलपर पर क्लिक करें.
  3. 'नया डेवलपर' विंडो में यह जानकारी डालें:

    इस फ़ील्ड में डालो
    नाम Keyser
    उपनाम Soze
    प्रयोक्ता नाम keyser
    ईमेल keyser@example.com
  4. बनाएं पर क्लिक करें.

ऐप्लिकेशन रजिस्टर करना

डेवलपर ऐप्लिकेशन रजिस्टर करने के लिए:

  1. पब्लिश करें > ऐप्लिकेशन चुनें.
  2. + ऐप्लिकेशन पर क्लिक करें.
  3. नया ऐप्लिकेशन विंडो में यह जानकारी डालें:

    p
    इस फ़ील्ड में यह करें
    नाम और डिसप्ले नेम keyser_app डालें
    कंपनी / डेवलपर चुनें: Developer
    डेवलपर चुनें: Keyser Soze (keyser@example.com)
    कॉलबैक यूआरएल और नोट खाली छोड़ें
  4. क्रेडेंशियल सेक्शन में, Expiry मेन्यू में जाकर, कभी नहीं चुनें. इस ऐप्लिकेशन के क्रेडेंशियल कभी खत्म नहीं होंगे.
  5. प्रॉडक्ट में जाकर, प्रॉडक्ट जोड़ें पर क्लिक करें.
  6. helloworld_apikey-Product को चुनें.
  7. जोड़ें पर क्लिक करें.
  8. अपने काम को सेव करने के लिए, ऐप्लिकेशन की जानकारी सेक्शन के ऊपर और दाईं ओर मौजूद, बनाएं पर क्लिक करें.

एपीआई पासकोड पाना

एपीआई पासकोड पाने के लिए:

  1. ऐप्लिकेशन पेज (पब्लिश करें > ऐप्लिकेशन) पर, keyser_app पर क्लिक करें.
  2. keyser_app पेज पर, क्रेडेंशियल सेक्शन में मौजूद पासकोड के बगल में मौजूद दिखाएं पर क्लिक करें. प्रॉडक्ट सेक्शन में, ध्यान दें कि कुंजी helloworld_apikey से जुड़ी है

    .
  3. कुंजी को चुनें और कॉपी करें. इसका इस्तेमाल अगले चरण में किया जाएगा.

किसी कुंजी की मदद से एपीआई को कॉल करना

अब आपके पास एपीआई कुंजी है. इसका इस्तेमाल करके, एपीआई प्रॉक्सी को कॉल किया जा सकता है. अपने वेब ब्राउज़र में यह डालें. नीचे दिए गए ORG_NAME की जगह अपने Edge संगठन का नाम और API_KEY की जगह एपीआई कुंजी डालें. पक्का करें कि क्वेरी पैरामीटर में कोई अतिरिक्त स्पेस न हो.

http://ORG_NAME-test.apigee.net/helloapikey?apikey=API_KEY

अब एपीआई प्रॉक्सी को कॉल करने पर, आपको यह जवाब मिलेगा: Hello, Guest!

बधाई हो! आपने एक एपीआई प्रॉक्सी बनाई है और उसे सुरक्षित किया है. इसके लिए, आपने यह ज़रूरी किया है कि कॉल में एक मान्य एपीआई पासकोड शामिल किया जाए.

ध्यान दें कि आम तौर पर, एपीआई पासकोड को क्वेरी पैरामीटर के तौर पर पास करना सही तरीका नहीं है. आपको इसे एचटीटीपी हेडर में पास करने के बारे में सोचना चाहिए.

सबसे सही तरीका: एचटीटीपी हेडर में कुंजी पास करना

इस चरण में, आपको प्रॉक्सी में बदलाव करना होगा, ताकि वह x-apikey नाम के हेडर में एपीआई पासकोड ढूंढ सके.

  1. एपीआई प्रॉक्सी में बदलाव करें. Develop > API Proxies > helloworld_apikey को चुनें. इसके बाद, Develop व्यू पर जाएं.
  2. Verify API Key नीति चुनें. इसके बाद, नीति के एक्सएमएल में बदलाव करके, नीति को queryparam के बजाय header में देखने के लिए कहें:

    <APIKey ref="request.header.x-apikey"/>
  3. बदलाव को लागू करने के लिए, एपीआई प्रॉक्सी को सेव करें.
  4. एपीआई पासकोड को x-apikey नाम के हेडर के तौर पर पास करने के लिए, cURL का इस्तेमाल करके यह एपीआई कॉल करें. अपने संगठन का नाम डालना न भूलें.

    curl -v -H "x-apikey: API_KEY" http://ORG_NAME-test.apigee.net/helloapikey
    

ध्यान दें कि बदलाव को पूरी तरह से लागू करने के लिए, आपको AssignMessage नीति को भी कॉन्फ़िगर करना होगा, ताकि क्वेरी पैरामीटर के बजाय हेडर को हटाया जा सके. उदाहरण के लिए:

<Remove>
<Headers>
    <Header name="x-apikey"/>
</Headers>
</Remove>

मिलते-जुलते विषय

यहां कुछ ऐसे विषय दिए गए हैं जो इस ट्यूटोरियल से सीधे तौर पर जुड़े हैं:

थोड़ा और गहराई से देखें, तो एपीआई पासकोड की मदद से एपीआई को सुरक्षित रखना, सिर्फ़ एक हिस्सा है. ज़्यादातर मामलों में, एपीआई की सुरक्षा के लिए OAuth जैसी अतिरिक्त सुरक्षा का इस्तेमाल किया जाता है.

OAuth एक ओपन प्रोटोकॉल है. यह ऐक्सेस टोकन के लिए क्रेडेंशियल (जैसे कि उपयोगकर्ता नाम और पासवर्ड) का आदान-प्रदान करता है. ऐक्सेस टोकन, लंबी और रैंडम स्ट्रिंग होती हैं. इन्हें मैसेज पाइपलाइन में एक से दूसरी जगह भेजा जा सकता है. यहां तक कि एक ऐप्लिकेशन से दूसरे ऐप्लिकेशन में भी भेजा जा सकता है. इससे ओरिजनल क्रेडेंशियल की सुरक्षा पर कोई असर नहीं पड़ता. ऐक्सेस टोकन की वैधता अक्सर कम समय के लिए होती है. इसलिए, नए टोकन हमेशा जनरेट होते रहते हैं.