काम की गाइड

Apigee Edge के दस्तावेज़ देखे जा रहे हैं.
पर जाएं Apigee X दस्तावेज़.
info

एपीआई पासकोड पाने का तरीका

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

1. Apigee में लॉग इन करें

  1. किसी ब्राउज़र में Apigee का यूज़र इंटरफ़ेस (यूआई) खोलें.
  2. यूआई में आने के बाद, उसी संगठन को चुनें जिसका इस्तेमाल आपने Apigee Adapter for Envoy को कॉन्फ़िगर करने के लिए किया था.

2. कोई डेवलपर बनाएं

टेस्टिंग के लिए, किसी मौजूदा डेवलपर का इस्तेमाल किया जा सकता है या नया डेवलपर बनाया जा सकता है. नया डेवलपर बनाने के लिए, यह तरीका अपनाएं:

  1. साइड नेविगेशन मेन्यू में, पब्लिश करें > डेवलपर को चुनें.
  2. + डेवलपर पर क्लिक करें.
  3. नया डेवलपर बनाने के लिए, डायलॉग बॉक्स में जानकारी भरें. डेवलपर के लिए, अपनी पसंद का कोई भी नाम/ईमेल इस्तेमाल किया जा सकता है.

3. कोई एपीआई प्रॉडक्ट बनाएं

प्रॉडक्ट बनाने के लिए, यहां दिया गया उदाहरण देखें. एपीआई प्रॉडक्ट के कॉन्फ़िगरेशन के बारे में जानकारी भी देखें.

  1. साइड नेविगेशन मेन्यू में, पब्लिश करें > एपीआई प्रॉडक्ट को चुनें.
  2. + API प्रॉडक्ट पर क्लिक करें.
  3. प्रॉडक्ट की जानकारी वाले पेज पर, इस तरह जानकारी भरें. सेव करें पर तब तक क्लिक न करें, जब तक ऐसा करने के लिए न कहा जाए.
  4. फ़ील्ड वैल्यू
    नाम httpbin-product
    दिखाने के लिए नाम httpbin product
    परिवेश your_environment

    इसे उस एनवायरमेंट पर सेट करें जिसका इस्तेमाल आपने apigee-remote-service-cli की मदद से, Apigee Adapter for Envoy को प्रोविज़न करते समय किया था.

    ऐक्सेस Private
    Quota हर एक मिनट में पांच अनुरोध

    कोटे के बारे में जानकारी भी देखें.

  5. Apigee रिमोट सेवा के टारगेट सेक्शन में, Apigee रिमोट सेवा का कोई टारगेट जोड़ें पर क्लिक करें.
  6. Apigee रिमोट सेवा के टारगेट वाले डायलॉग बॉक्स में, ये वैल्यू जोड़ें:
    एट्रिब्यूट वैल्यू ब्यौरा
    टारगेट का नाम टारगेट सेवा का नाम डालें. उदाहरण के लिए: httpbin.org Envoy प्रॉक्सी के ज़रिए ऐक्सेस किया जाने वाला टारगेट एंडपॉइंट.
    एपीआई प्रॉक्सी remote-service remote-service प्रॉक्सी, जिसे Envoy Adapter के इंस्टॉलेशन के दौरान Apigee पर प्रोविज़न किया गया था.
    पाथ किसी खास पाथ से मैच करने के लिए, /resource_path डालें. उदाहरण उदाहरण: /httpbin. टारगेट एंडपॉइंट पर मैच करने के लिए, अनुरोध का पाथ. इस पाथ पर किए गए एपीआई प्रॉक्सी कॉल इस एपीआई प्रॉडक्ट से मैच करेंगे.

    Edge Public या Private Cloud: यहां दिए गए स्क्रीनशॉट में, httpbin.org टारगेट के लिए सही तरीके से कॉन्फ़िगर की गई डायलॉग सेटिंग दिखाई गई है. यह Apigee Edge Public या Private Cloud के लिए सही कॉन्फ़िगरेशन है.

  7. सेव करें पर क्लिक करें.

4. कोई डेवलपर ऐप्लिकेशन बनाएं

  1. साइड नेविगेशन मेन्यू में, पब्लिश करें > ऐप्लिकेशन को चुनें.
  2. + ऐप्लिकेशन पर क्लिक करें.
  3. डेवलपर ऐप्लिकेशन वाले पेज पर, इस तरह जानकारी भरें. सेव करने के लिए तब तक क्लिक न करें, जब तक ऐसा करने के लिए न कहा जाए.
  4. नाम httpbin-app
    दिखाने के लिए नाम httpbin app
    डेवलपर वह डेवलपर चुनें जिसे आपने पहले बनाया था या सूची में से अपनी पसंद का कोई डेवलपर चुनें.
  5. इसके बाद, ऐप्लिकेशन में दो प्रॉडक्ट जोड़ें:
    1. सबसे पहले, क्रेडेंशियल सेक्शन में, + प्रॉडक्ट जोड़ें पर क्लिक करें. इसके बाद, वह प्रॉडक्ट चुनें जिसे आपने अभी कॉन्फ़िगर किया है: httpbin-product.
    2. इसके बाद, remote-service प्रॉडक्ट जोड़ें. Apigee को प्रोविज़न करते समय, यह प्रॉडक्ट अपने-आप बन गया था.
  6. बनाएं पर क्लिक करें.
  7. क्रेडेंशियल में जाकर, कुंजी के बगल में मौजूद दिखाएं पर क्लिक करें.
  8. कंज्यूमर कुंजी की वैल्यू कॉपी करें. यह वैल्यू एपीआई पासकोड है. इसका इस्तेमाल, httpbin सेवा के लिए एपीआई कॉल करने के लिए किया जाएगा.

एपीआई प्रॉडक्ट के बारे में जानकारी

एपीआई प्रॉडक्ट, Apigee Remote Service के लिए कंट्रोल का मुख्य पॉइंट होते हैं. जब कोई एपीआई प्रॉडक्ट बनाया जाता है और उसे किसी टारगेट सेवा से जोड़ा जाता है, तो एक नीति बनती है. यह नीति, उन सभी अनुरोधों पर लागू होगी जिन्हें हैंडल करने के लिए, आपने Apigee Adapter for Envoy को कॉन्फ़िगर किया है.

एपीआई प्रॉडक्ट की परिभाषा

Apigee में एपीआई प्रॉडक्ट की परिभाषा देते समय, कई पैरामीटर सेट किए जा सकते हैं . इनका इस्तेमाल, अनुरोधों का आकलन करने के लिए किया जाएगा:

  • टारगेट
  • अनुरोध का पाथ
  • Quota
  • OAuth के दायरे

रिमोट सेवा के टारगेट

एपीआई प्रॉडक्ट की परिभाषा, किसी अनुरोध पर तब लागू होगी, जब अनुरोध, टारगेट बाइंडिंग (उदाहरण के लिए, httpbin.org) और अनुरोध के पाथ (उदाहरण के लिए /httpbin) दोनों से मैच करता हो. संभावित टारगेट की सूची, एपीआई प्रॉडक्ट पर एट्रिब्यूट के तौर पर सेव की जाती है.

डिफ़ॉल्ट रूप से, Apigee Remote Service, Envoy के खास :authority (host) हेडर की तुलना, टारगेट की सूची से करता है. हालांकि, इसे अन्य हेडर का इस्तेमाल करने के लिए कॉन्फ़िगर किया जा सकता है.

एपीआई रिसॉर्स पाथ

डाला गया पाथ, इन नियमों के मुताबिक मैच करता है:

  • सिर्फ़ एक स्लैश (/) किसी भी पाथ से मैच करता है.
  • * कहीं भी मान्य है और यह किसी सेगमेंट (स्लैश के बीच) में मैच करता है.
  • ** आखिर में मान्य है और यह लाइन के आखिर तक किसी भी चीज़ से मैच करता है.

Quota

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

कोटे के इस्तेमाल के उदाहरण

कोटे की मदद से, यह तय किया जा सकता है कि कोई क्लाइंट, किसी सेवा के लिए तय समय में कितने अनुरोध कर सकता है. कोटे का इस्तेमाल अक्सर, कारोबार के समझौतों या डेवलपर और पार्टनर के साथ किए गए एसएलए को लागू करने के लिए किया जाता है. इसका इस्तेमाल, ऑपरेशनल ट्रैफ़िक मैनेजमेंट के लिए नहीं किया जाता. उदाहरण के लिए, कोटे का इस्तेमाल, किसी मुफ़्त सेवा के लिए ट्रैफ़िक को सीमित करने के लिए किया जा सकता है. वहीं, पैसे चुकाने वाले ग्राहकों को पूरा ऐक्सेस दिया जा सकता है.

कोटा, एपीआई प्रॉडक्ट में तय किया जाता है

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

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

Apigee रनटाइम के उलट, प्रॉडक्ट की परिभाषा में डाले गए कोटे, Apigee Remote Service की मदद से अपने-आप लागू हो जाते हैं. अगर अनुरोध को अनुमति दी जाती है, तो अनुरोध को तय कोटे के हिसाब से गिना जाएगा.

कोटे कहां सेव किए जाते हैं

कोटे, Remote Service की प्रोसेस से स्थानीय तौर पर सेव किए जाते हैं और उनकी जांच की जाती है. साथ ही, इन्हें Apigee Runtime के साथ एसिंक्रोनस तरीके से सेव किया जाता है. इसका मतलब है कि कोटे सटीक नहीं होते. अगर एक से ज़्यादा Remote Service, कोटे को सेव कर रही हैं, तो कोटे की सीमा से ज़्यादा इस्तेमाल होने की संभावना होती है. अगर Apigee Runtime से कनेक्शन टूट जाता है, तो स्थानीय कोटा, स्टैंडअलोन कोटे के तौर पर तब तक काम करता रहेगा, जब तक यह Apigee Runtime से फिर से कनेक्ट नहीं हो जाता.

OAuth के दायरे

अगर JWT टोकन का इस्तेमाल किया जा रहा है, तो टोकन को, अनुमति वाले OAuth के दायरों के सबसेट तक सीमित किया जा सकता है. जारी किए गए JWT टोकन को असाइन किए गए दायरों की तुलना, एपीआई प्रॉडक्ट के दायरों से की जाएगी.

डेवलपर ऐप्लिकेशन के बारे में जानकारी

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

JWT के आधार पर पुष्टि करने की सुविधा का इस्तेमाल करना

पुष्टि किए गए एपीआई प्रॉक्सी कॉल करने के लिए, एपीआई पासकोड के बजाय JWT टोकन का इस्तेमाल किया जा सकता है. इस सेक्शन में, JWT टोकन बनाने, उनकी जांच करने, और उन्हें रोटेट करने के लिए, apigee-remote-service-cli token कमांड का इस्तेमाल करने का तरीका बताया गया है.

खास जानकारी

JWT की पुष्टि और ऑथेंटिकेशन, Envoy के JWT Authentication Filter का इस्तेमाल करके हैंडल किया जाता है.

पुष्टि होने के बाद, Envoy का ext-authz फ़िल्टर, अनुरोध के हेडर और JWT को apigee-remote-service-envoy को भेजता है. यह, अनुरोध के टारगेट के लिए अनुमति देने के लिए, Apigee API प्रॉडक्ट के मुकाबले, JWT के api_product_list और scope दावों से मैच करता है.

Apigee JWT टोकन बनाना

Apigee JWT टोकन, सीएलआई का इस्तेमाल करके बनाए जा सकते हैं:

apigee-remote-service-cli token create -c config.yaml --id $KEY --secret $SECRET

या स्टैंडर्ड OAuth टोकन एंडपॉइंट का इस्तेमाल करके. कर्ल का उदाहरण:

curl https://org-env.apigee.net/remote-service/token -d '{"client_id":"myclientid","client_secret":"myclientsecret","grant_type":"client_credentials"}' -H "Content-type: application/json"

JWT टोकन का इस्तेमाल करना

टोकन मिलने के बाद, इसे Authorization हेडर में Envoy को पास करें. उदाहरण:

curl localhost:8080/httpbin/headers -i -H "Authorization:Bearer $TOKEN"

JWT टोकन में गड़बड़ी

Envoy से अस्वीकार किया जाना

अगर Envoy टोकन को अस्वीकार करता है, तो आपको यह मैसेज दिख सकता है:

Jwks remote fetch is failed

ऐसा होने पर, पक्का करें कि आपके Envoy कॉन्फ़िगरेशन के remote_jwks सेक्शन में, मान्य यूआरआई मौजूद हो. साथ ही, यह भी पक्का करें कि Envoy इसे ऐक्सेस कर सके. इसके अलावा, Apigee प्रॉक्सी इंस्टॉल करते समय, आपने सर्टिफ़िकेट सही तरीके से सेट किए हों. आपको सीधे तौर पर, GET कॉल की मदद से यूआरआई को कॉल करना चाहिए. साथ ही, मान्य JSON जवाब मिलना चाहिए.

उदाहरण:

curl https://myorg-eval-test.apigee.net/remote-service/certs

Envoy से मिलने वाले अन्य मैसेज इस तरह दिख सकते हैं:

  • "Audiences in Jwt are not allowed"
  • "Jwt issuer is not configured"

ये मैसेज, आपके Envoy कॉन्फ़िगरेशन में मौजूद उन ज़रूरी शर्तों की वजह से दिखते हैं जिनमें बदलाव करने की ज़रूरत पड़ सकती है.

टोकन की जांच करना

टोकन की जांच करने के लिए, सीएलआई का इस्तेमाल किया जा सकता है. उदाहरण

apigee-remote-service-cli -c config.yaml token inspect -f path/to/file

या

apigee-remote-service-cli -c config.yaml token inspect <<< $TOKEN

डीबग करना

मान्य एपीआई पासकोड काम नहीं करता लेख देखें.

लॉग इन हो रहा है

$REMOTE_SERVICE_HOME/apigee-remote-service-envoy सेवा पर, लॉगिंग का लेवल अडजस्ट किया जा सकता है. सभी लॉग, stderr को भेजे जाते हैं.

एलिमेंट ज़रूरी है ब्यौरा
-l, --log-level मान्य लेवल: debug, info, warn, error. इससे लॉगिंग का लेवल अडजस्ट किया जाता है. डिफ़ॉल्ट: info
-j, --json-log लॉग आउटपुट को JSON रिकॉर्ड के तौर पर दिखाता है.

Envoy, लॉगिंग की सुविधा देता है. ज़्यादा जानकारी के लिए, Envoy के दस्तावेज़ के ये लिंक देखें:

नेटवर्क प्रॉक्सी का इस्तेमाल करना

apigee-remote-service-envoy बाइनरी के एनवायरमेंट में, HTTP_PROXY और HTTPS_PROXY एनवायरमेंट वैरिएबल का इस्तेमाल करके, एचटीटीपी प्रॉक्सी जोड़ा जा सकता है. इनका इस्तेमाल करते समय, NO_PROXY एनवायरमेंट वैरिएबल का इस्तेमाल करके, कुछ खास होस्ट को प्रॉक्सी के ज़रिए भेजे जाने से भी रोका जा सकता है.

HTTP_PROXY=http://[user]:[pass]@[proxy_ip]:[proxy_port]
HTTPS_PROXY=http://[user]:[pass]@[proxy_ip]:[proxy_port]
NO_PROXY=127.0.0.1,localhost

ध्यान रखें कि प्रॉक्सी को apigee-remote-service-envoy से ऐक्सेस किया जा सके.

मेट्रिक और आंकड़ों के बारे में जानकारी

Prometheus मेट्रिक एंडपॉइंट, :5001/metrics पर उपलब्ध है. इस पोर्ट नंबर को कॉन्फ़िगर किया जा सकता है. कॉन्फ़िगरेशन फ़ाइल देखें.

Envoy के आंकड़े

Envoy प्रॉक्सी के आंकड़ों का डेटा पाने के बारे में जानकारी के लिए, ये लिंक देखें:

Istio के आंकड़े

Envoy प्रॉक्सी के आंकड़ों का डेटा पाने के बारे में जानकारी के लिए, ये लिंक देखें:

Apigee के आंकड़े

Envoy के लिए Apigee Remote Service, आंकड़ों को प्रोसेस करने के लिए, Apigee को अनुरोध के आंकड़े भेजती है. Apigee, इन अनुरोधों की रिपोर्ट, उनसे जुड़े एपीआई प्रॉडक्ट के नाम से दिखाता है.

Apigee के आंकड़ों के बारे में जानकारी के लिए, देखें आंकड़ों की सेवाओं की खास जानकारी.