Edge API को ऐक्सेस करने के लिए OAuth2 का इस्तेमाल करना

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

Apigee Edge से, आपको OAuth2 टोकन की मदद से पुष्टि किए गए Edge API कॉल करने की सुविधा मिलती है. Edge पर क्लाउड खातों के लिए OAuth2 के साथ काम करने की सुविधा डिफ़ॉल्ट रूप से चालू होती है. अगर प्राइवेट क्लाउड के लिए Edge का इस्तेमाल किया जा रहा है, तो पहले एसएएमएल को सेट अप किए बिना OAuth2 या LDAP का इस्तेमाल नहीं किया जा सकता.

OAuth2 कैसे काम करता है (Apigee Edge API के साथ)

Apigee Edge API को किए जाने वाले कॉल के लिए, पुष्टि करना ज़रूरी होता है. इससे हम यह पक्का कर पाते हैं कि आप वही हैं जो आपने कहा है. आपकी पुष्टि करने के लिए, हमें एपीआई ऐक्सेस करने के आपके अनुरोध के साथ OAuth2 ऐक्सेस टोकन भेजना होगा.

उदाहरण के लिए, अगर आपको Edge पर मौजूद किसी संगठन के बारे में जानकारी चाहिए, तो आपको इस तरह के यूआरएल पर अनुरोध भेजना होगा:

https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval

हालांकि, अपने बारे में हमें बताए बिना यह अनुरोध भेजा नहीं जा सकता. ऐसा नहीं करने पर, कोई भी आपके संगठन की जानकारी देख सकता है.

यहां OAuth2 की ज़रूरत होती है: आपकी पहचान की पुष्टि करने के लिए, आपको हमें उस अनुरोध में भी ऐक्सेस टोकन भेजना होगा. ऐक्सेस टोकन से हमें पता चलता है कि आप कौन हैं. इससे हम यह पक्का कर पाते हैं कि आपके पास संगठन की जानकारी देखने की अनुमति हो.

अच्छी बात यह है कि आपको Edge OAuth2 सेवा पर अपने क्रेडेंशियल भेजकर टोकन मिल सकता है. सेवा, ऐक्सेस और रीफ़्रेश टोकन के साथ जवाब देती है.

OAuth2 फ़्लो: शुरुआती अनुरोध

नीचे दी गई इमेज में, Edge API को पहली बार ऐक्सेस करने पर OAuth2 फ़्लो दिखाया गया है:

OAuth फ़्लो: पहला अनुरोध
पहली इमेज: OAuth फ़्लो: पहला अनुरोध

जैसा कि पहली इमेज में दिखाया गया है कि जब Edge API को शुरुआती अनुरोध किया जाता है, तो:

  1. आपने ऐक्सेस टोकन के लिए अनुरोध किया है. इसके लिए, Edge API, acurl या get_token का इस्तेमाल किया जा सकता है. उदाहरण के लिए:
    get_token
    Enter username:
    ahamilton@apigee.com
    Enter the password for user 'ahamilton@apigee.com'
    [hidden input]
    Enter the six-digit code if 'ahamilton@apigee.com' is MFA enabled or press ENTER:
    123456
  2. Edge OAuth2 सेवा ऐक्सेस टोकन के साथ जवाब देती है और उसे stdout में प्रिंट करती है; उदाहरण के लिए:
    Dy42bGciOiJSUzI1NiJ9.eyJqdGkiOiJhM2YwNjA5ZC1lZTIxLTQ1YjAtOGQyMi04MTQ0MTYxNjNhNTMiLCJz
    AJpdGUiLCJhcHByb3ZhbHMubWUiLCJvYXV0aC5hcHByb3ZhbHMiXSwiY2xpZW50X2lkIjoiZWRnZWNsaSIsIm
    NjbGkiLCJhenAiOiJlZGdlY2xpIiwiZ3JhbnRfdHlwZSI6InBhc3N3b3JkIiwidXNlcl9pZCI6IjJkMWU3NDI
    GzQyMC1kYzgxLTQzMDQtOTM4ZS1hOGNmNmVlODZhNzkiLCJzY29wZSI6WyJzY2ltLm1lIiwib3BlbmlkIiwic
    ENC05MzhlLWE4Y2Y2ZWU4NmE3OSIsIm9yaWdpbiI6InVzZXJncmlkIiwidXNlcl9uYW1lIjoiZGFuZ2VyNDI0
    RI6ImUyNTM2NWQyIiwiaWF0IjoxNTI4OTE2NDA5LCJleHAiOjE1Mjg5MTgyMDksImlzcyI6Imh0dHBzOi8vbG
    420iLCJlbWFpbCI6ImRhbmdlcjQyNDJAeWFob28uY29tIiwiYXV0aF90aW1lIjoxNTI4OTE2NDA5LCJhbCI6M
    2lLmNvbSIsInppZCI6InVhYSIsImF1ZCI6WyJlZGdlY2xpIiwic2NpbSIsIm9wZW5pZCIsInBhc3N3b3JkIiw

    acurl और get_token सुविधाएं बिना किसी पाबंदी के ऐक्सेस को सेव करती हैं और टोकन को रीफ़्रेश करके ~/.sso-cli (stdout पर रीफ़्रेश टोकन नहीं लिखा होता है) पर सेव करती हैं. अगर टोकन पाने के लिए Edge OAuth2 सेवा का इस्तेमाल किया जाता है, तो आपको उन्हें सेव करना होगा, ताकि बाद में उनका इस्तेमाल किया जा सके.

  3. आपको ऐक्सेस टोकन के साथ Edge API को अनुरोध भेजना होता है. acurl टोकन को अपने-आप अटैच करता है. उदाहरण के लिए:
    acurl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval

    किसी दूसरे एचटीटीपी क्लाइंट का इस्तेमाल करने पर, पक्का करें कि ऐक्सेस टोकन जोड़ा गया हो. उदाहरण के लिए:

    curl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \
      -H "Authorization: Bearer ACCESS_TOKEN"
  4. Edge API आपके अनुरोध पर काम करता है और आम तौर पर डेटा के साथ जवाब देता है.

OAuth2 फ़्लो: बाद के अनुरोध

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

OAuth फ़्लो: बाद के अनुरोध
दूसरी इमेज: OAuth फ़्लो: बाद के अनुरोध

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

  1. आपको ऐक्सेस टोकन के साथ Edge API को अनुरोध भेजना होता है. acurl टोकन को अपने-आप अटैच कर देता है. अगर अन्य टूल का इस्तेमाल किया जाता है, तो आपको टोकन को मैन्युअल तरीके से जोड़ना होगा.
  2. Edge API आपके अनुरोध पर काम करता है और आम तौर पर डेटा के साथ जवाब देता है.

OAuth2 फ़्लो: जब आपके ऐक्सेस टोकन की समयसीमा खत्म हो जाती है

ऐक्सेस टोकन की समयसीमा खत्म होने (12 घंटे के बाद) पर, नया ऐक्सेस टोकन पाने के लिए रीफ़्रेश टोकन का इस्तेमाल किया जा सकता है:

OAuth फ़्लो: ऐक्सेस टोकन को रीफ़्रेश करना
तीसरी इमेज: OAuth फ़्लो: ऐक्सेस टोकन को रीफ़्रेश करना

जैसा कि इमेज 3 में दिखाया गया है, आपके ऐक्सेस टोकन की समयसीमा कब खत्म हुई:

  1. आपने Edge API को एक अनुरोध भेजा, लेकिन आपके ऐक्सेस टोकन की समयसीमा खत्म हो गई.
  2. Edge API आपकी अनुमति के बिना अनुरोध को अस्वीकार कर देता है.
  3. Edge OAuth2 सेवा को रीफ़्रेश टोकन भेजा जाता है. अगर acurl का इस्तेमाल किया जा रहा है, तो यह अपने-आप हो जाता है.
  4. Edge OAuth2 सेवा नए ऐक्सेस टोकन के साथ जवाब देती है.
  5. नए ऐक्सेस टोकन के साथ Edge API को अनुरोध भेजें.
  6. Edge API आपके अनुरोध पर काम करता है और आम तौर पर डेटा के साथ जवाब देता है.

टोकन पाएं

EDGE API को भेजा जा सकने वाला ऐक्सेस टोकन पाने के लिए, curl जैसी यूटिलिटी के अलावा, इन Apigee यूटिलिटी का इस्तेमाल किया जा सकता है:

  • get_token यूटिलिटी: यह आपके Apigee क्रेडेंशियल को ऐक्सेस और उन टोकन को रीफ़्रेश करता है जिनका इस्तेमाल Edge API को कॉल करने के लिए किया जा सकता है.
  • acurl यूटिलिटी: स्टैंडर्ड curl कमांड के आस-पास सुविधा रैपर देता है. यह Edge API को एचटीटीपी अनुरोध बनाता है, get_token से ऐक्सेस और रीफ़्रेश टोकन लेता है, और EDGE API को ऐक्सेस टोकन देता है.
  • Edge OAuth2 सेवा में टोकन एंडपॉइंट: ऐक्सेस के लिए अपने Apigee क्रेडेंशियल की अदला-बदली करें और Edge API को कॉल करके टोकन रीफ़्रेश करें.

ये सुविधाएं, आपके Apigee खाते के क्रेडेंशियल (ईमेल पता और पासवर्ड) को टोकन के लिए, नीचे दी गई अवधि तक एक्सचेंज करती हैं:

  • ऐक्सेस टोकन की समयसीमा 12 घंटे में खत्म हो जाती है.
  • रीफ़्रेश टोकन की समयसीमा 30 दिनों में खत्म हो जाती है.

इसलिए, acurl या get_token पर एपीआई कॉल करने के बाद, टोकन पेयर को 30 दिनों तक इस्तेमाल किया जा सकता है. समयसीमा खत्म होने के बाद, आपको अपने क्रेडेंशियल फिर से डालने होंगे और नए टोकन पाने होंगे.

OAuth2 की मदद से Edge API को ऐक्सेस करना

Edge API को ऐक्सेस करने के लिए, आपको एपीआई एंडपॉइंट पर अनुरोध भेजना होता है और ऐक्सेस टोकन शामिल करना होता है. ऐसा किसी भी एचटीटीपी क्लाइंट के साथ किया जा सकता है. इसमें कमांड-लाइन यूटिलिटी, जैसे कि curl, ब्राउज़र पर आधारित यूज़र इंटरफ़ेस (यूआई) जैसे पोस्टमैन या acurl जैसी Apigee की सुविधाएं शामिल हैं.

acurl और curl की मदद से Edge API को ऐक्सेस करने के बारे में आगे के सेक्शन में बताया गया है.

acurl का इस्तेमाल करें

acurl के साथ Edge API को ऐक्सेस करने के लिए, आपके शुरुआती अनुरोध में आपके क्रेडेंशियल शामिल होने चाहिए. Edge OAuth2 सेवा, ऐक्सेस और रीफ़्रेश टोकन के साथ जवाब देती है. acurl टोकन को स्थानीय तौर पर सेव करता है.

बाद के अनुरोधों पर, acurl, ~/.sso-cli में सेव किए गए टोकन का इस्तेमाल करता है, ताकि आपको टोकन की समयसीमा खत्म होने तक अपने क्रेडेंशियल फिर से शामिल न करने पड़ें.

इस उदाहरण में, acurl के शुरुआती अनुरोध के बारे में बताया गया है. इसमें "ahamilton-eval" संगठन की जानकारी दी गई है:

acurl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \
  -u ahamilton@apigee.com
Enter the password for user 'ahamilton@apigee.com'
[hidden input]
Enter the six-digit code (no spaces) if 'ahamilton@apigee.com' is MFA-enabled or press ENTER:
1a2b3c
{
  "createdAt" : 1491854501264,
  "createdBy" : "noreply_iops@apigee.com",
  "displayName" : "ahamilton",
  "environments" : [ "prod", "test" ],
  "lastModifiedAt" : 1491854501264,
  "lastModifiedBy" : "noreply_iops@apigee.com",
  "name" : "ahamilton",
  "properties" : {
    "property" : [ {
      "name" : "features.isSmbOrganization",
      "value" : "false"
    }, {
      "name" : "features.isCpsEnabled",
      "value" : "true"
    } ]
  },
  "type" : "trial"
}

acurl https://api.enterprise.apigee.com/v1/o/ahamilton-eval/apis/helloworld/revisions/1/policies

[ "SOAP-Message-Validation-1", "Spike-Arrest-1", "XML-to-JSON-1" ]

इस उदाहरण में संगठन के बारे में जानकारी पाने के साथ-साथ दूसरा अनुरोध भी दिखाया गया है. इसमें "helloworld" एपीआई प्रॉक्सी में मौजूद नीतियों की सूची भेजी जाती है. दूसरे अनुरोध में, यूआरएल में "संगठनों" के लिए, "o" को छोटा करने के विकल्प का इस्तेमाल किया जाता है.

ध्यान दें कि acurl दूसरे अनुरोध पर, ऐक्सेस टोकन को अपने-आप पास कर देता है. acurl जब OAuth2 टोकन सेव कर लेगा, तब आपको उपयोगकर्ता क्रेडेंशियल पास करने की ज़रूरत नहीं होगी. इसे अगले कॉल के लिए, ~/.sso-cli से टोकन मिलता है.

ज़्यादा जानकारी के लिए, Edge API को ऐक्सेस करने के लिए acurl का इस्तेमाल करना लेख पढ़ें.

कर्ल का इस्तेमाल करें

EDGE API को ऐक्सेस करने के लिए, curl का इस्तेमाल किया जा सकता है. ऐसा करने के लिए, सबसे पहले आपको ऐक्सेस और रीफ़्रेश टोकन पाने होंगे. ये आपको get_token या Edge OAuth2 सेवा जैसी किसी सुविधा का इस्तेमाल करके मिल सकते हैं.

ऐक्सेस टोकन सेव करने के बाद, इसे कॉल के Authorization हेडर में Edge API पर भेजा जाता है, जैसा कि इस उदाहरण में दिखाया गया है:

curl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \
  -H "Authorization: Bearer ACCESS_TOKEN"

ऐक्सेस टोकन, जारी किए जाने के बाद 12 घंटे के लिए मान्य होता है. ऐक्सेस टोकन की समयसीमा खत्म होने के बाद, रीफ़्रेश टोकन का इस्तेमाल 30 दिनों तक किया जा सकता है. इससे, क्रेडेंशियल के बिना दूसरा ऐक्सेस टोकन जारी किया जा सकता है. Apigee, क्रेडेंशियल डालने और हर एपीआई कॉल के लिए एक नया अनुरोध करने के बजाय, सिर्फ़ रेफ़रर टोकन की समयसीमा खत्म होने के बाद ही नए ऐक्सेस टोकन का अनुरोध करने का सुझाव देता है.

टोकन के खत्म होने की तारीख

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

ऐक्सेस टोकन को रीफ़्रेश करने का तरीका, इस बात पर निर्भर करता है कि कौनसा टूल इस्तेमाल किया जा रहा है:

  • acurl: किसी कार्रवाई की ज़रूरत नहीं है. जब कोई ऐसा अनुरोध भेजा जाता है जिसमें पुराना ऐक्सेस टोकन होता है, तो acurl ऐक्सेस टोकन को अपने-आप रीफ़्रेश कर देता है.
  • get_token: ऐक्सेस टोकन को रीफ़्रेश करने के लिए, get_token को कॉल करें.
  • Edge OAuth2 सेवा: एक अनुरोध भेजें, जिसमें ये चीज़ें शामिल हों:
    • टोकन रीफ़्रेश करें
    • grant_type फ़ॉर्म पैरामीटर को "refresh_token" पर सेट किया गया है

मशीन उपयोगकर्ताओं के लिए OAuth2

मशीन उपयोगकर्ताओं के लिए, OAuth2 की पुष्टि करने की सुविधा का इस्तेमाल करके, Edge एपीआई के अपने-आप ऐक्सेस स्क्रिप्ट करने के लिए, acurl और get_token सुविधाओं का इस्तेमाल किया जा सकता है. इस उदाहरण में, ऐक्सेस टोकन का अनुरोध करने के लिए get_token का इस्तेमाल करने और फिर टोकन वैल्यू को curl कॉल में जोड़ने का तरीका बताया गया है:

  USER=me@example.com
  PASS=not-that-secret
  TOKEN=$(get_token -u $USER:$PASS -m '')
  curl -H "Authorization: Bearer $TOKEN" 'https://api.enterprise.apigee.com/v1/organizations/...'

इसके अलावा, acurl यूटिलिटी का इस्तेमाल करके टोकन अनुरोध और curl कॉल को एक साथ जोड़ा जा सकता है. उदाहरण के लिए:

  USER=me@example.com
  PASS=not-that-secret
  acurl -u $USER:$PASS -m '' 'https://api.enterprise.apigee.com/v1/organizations/...'
  

दोनों उदाहरणों में, -m की वैल्यू को किसी खाली स्ट्रिंग पर सेट करने से, मशीन का इस्तेमाल करने वाले लोगों को MFA कोड के लिए अनुरोध नहीं किया जाएगा.