OAuth

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

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

OAuth एक ऐसा प्रोटोकॉल है जो ऐप्लिकेशन के असली उपयोगकर्ताओं को यह अनुमति देता है कि वे ऐप्लिकेशन को उनकी ओर से कार्रवाई करने की अनुमति दे सकें. ऐप्लिकेशन ऐसा करने के लिए, एपीआई सेवा देने वाली कंपनियों से ऐक्सेस टोकन लेते हैं. एपीआई सेवा देने वाली कंपनी, ऐप्लिकेशन के असली उपयोगकर्ता के क्रेडेंशियल की पुष्टि करती है और यह पक्का करती है कि उपयोगकर्ता ने ऐप्लिकेशन को अनुमति दी है. इसके बाद, वह ऐप्लिकेशन के लिए ऐक्सेस टोकन जारी करता है. जब ऐप्लिकेशन, सुरक्षित एपीआई का इस्तेमाल करता है, तो Apigee Edge, ऐक्सेस टोकन की जांच करके यह पक्का करता है कि वह मान्य है और उसकी समयसीमा खत्म नहीं हुई है. एपीआई सेवा देने वाली कंपनी के तौर पर, आपको ऐसे एंडपॉइंट इस्तेमाल करने होंगे जो ऐप्लिकेशन को ऐक्सेस टोकन पाने की सुविधा देते हैं.

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

आपके संगठन के लिए डिफ़ॉल्ट OAuth कॉन्फ़िगरेशन

आपकी सुविधा के लिए, Apigee Edge पर मौजूद सभी संगठनों को, OAuth 2.0 एंडपॉइंट के सेट के साथ पहले से कॉन्फ़िगर किया जाता है. ये एंडपॉइंट, क्लाइंट क्रेडेंशियल अनुदान टाइप को लागू करते हैं. क्लाइंट क्रेडेंशियल ग्रांट टाइप, ऐप्लिकेशन क्रेडेंशियल के बदले ऐक्सेस टोकन जारी करने की प्रक्रिया के बारे में बताता है. ये ऐप्लिकेशन क्रेडेंशियल सिर्फ़ उपभोक्ता कुंजी और सीक्रेट जोड़े होते हैं जो किसी संगठन में रजिस्टर किए गए हर ऐप्लिकेशन के लिए Apigee Edge से जुड़े होते हैं. 'क्लाइंट क्रेडेंशियल' का मतलब उपभोक्ता कुंजी और सीक्रेट जोड़े से है.

Edge डेवलपर सेवाओं का इस्तेमाल करके ऐप्लिकेशन को क्रेडेंशियल जारी करने के बारे में ज़्यादा जानने के लिए, ऐप्लिकेशन रजिस्टर करें और कुंजियां मैनेज करें देखें.

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

क्लाइंट क्रेडेंशियल देने की पूरी जानकारी, OAuth 2.0 स्पेसिफ़िकेशन में देखी जा सकती है.

अपने एपीआई को किसी नीति की मदद से सुरक्षित रखें

ऐक्सेस टोकन का इस्तेमाल करने से पहले, आपको रनटाइम के दौरान OAuth ऐक्सेस टोकन की पुष्टि करने के लिए, अपने एपीआई को कॉन्फ़िगर करना होगा. ऐसा करने के लिए, आपको ऐक्सेस टोकन की validate करने के लिए, एपीआई प्रॉक्सी कॉन्फ़िगर करनी होगी. इसका मतलब है कि जब भी कोई ऐप्लिकेशन आपके किसी एपीआई को इस्तेमाल करने का अनुरोध करता है, तो ऐप्लिकेशन को एपीआई अनुरोध के साथ, एक मान्य ऐक्सेस टोकन भी दिखाना चाहिए. Apigee Edge, दिखाए गए ऐक्सेस टोकन को जनरेट करने, सेव करने, और उसकी पुष्टि करने से जुड़ी जटिलता को हैंडल करता है.

नया एपीआई प्रॉक्सी बनाते समय, किसी एपीआई में OAuth पुष्टि को आसानी से जोड़ा जा सकता है. नया एपीआई प्रॉक्सी बनाते समय, आपके पास सुविधाएं जोड़ने का विकल्प होता है. जैसा कि नीचे दिखाया गया है, OAuth 2.0 ऐक्सेस टोकन के साथ सुरक्षित के बगल में मौजूद रेडियो बटन को चुनकर, OAuth 2.0 ऐक्सेस टोकन की पुष्टि की जा सकती है. इस विकल्प को चुनने पर, नए बनाए गए एपीआई प्रॉक्सी के साथ दो नीतियां जोड़ी जाएंगी. एक नीति, ऐक्सेस टोकन की पुष्टि करने के लिए और दूसरी नीति, ऐक्सेस टोकन की पुष्टि होने के बाद उसे हटाने के लिए होगी.

साथ ही, OAuth v2.0 ऐक्सेस टोकन के साथ सुरक्षित विकल्प चुनने पर, Publisher API Product चेकबॉक्स को चुना जा सकता है और वह अपने-आप चुन लिया जाता है. अगर आप चाहते हैं कि नया एपीआई प्रॉक्सी बनाते समय, अपने-आप कोई प्रॉडक्ट जनरेट हो जाए, तो इसे चुनें. अपने-आप जनरेट हुए प्रॉडक्ट को, नए एपीआई प्रॉक्सी के साथ जोड़कर बनाया जाएगा. अगर आपका कोई मौजूदा प्रॉडक्ट है, जिसके साथ आपको इस नए एपीआई को जोड़ना है, तो इस चेकबॉक्स पर सही का निशान लगाना न भूलें. इससे, बिना किसी वजह के प्रॉडक्ट न बने. प्रॉडक्ट के बारे में जानकारी के लिए, देखें कि एपीआई प्रॉडक्ट क्या होता है?

अगर आपको पहले से मौजूद एपीआई प्रॉक्सी के लिए, ऐक्सेस टोकन की पुष्टि करने की सुविधा चालू करनी है, तो आपको उस एपीआई में OAuthV2 टाइप वाली नीति अटैच करनी होगी जिसे आपको सुरक्षित रखना है. OAuthV2 नीतियां, किसी ऑपरेशन के बारे में तय करके काम करती हैं. अगर आपको ऐक्सेस टोकन की पुष्टि करनी है, तो आपको VerifyAccessToken नाम की कार्रवाई बतानी होगी. (OAuthV2 नीति के साथ काम करने वाली दूसरी तरह की कार्रवाइयां, generateAccessToken और generateRefreshToken हैं. आपको OAuth एंडपॉइंट सेट अप करने के दौरान उन कार्रवाइयों के बारे में जानकारी मिलेगी.)

OAuthV2 टाइप की VerificationOAuthTokens नीति

ऐक्सेस टोकन की पुष्टि करने के लिए, यहां दी गई नीति का उदाहरण दिया गया है. (इन सेटिंग के बारे में नीचे दी गई टेबल में बताया गया है.)

<OAuthV2 name="VerifyOAuthTokens"> 
  <Operation>VerifyAccessToken</Operation> 
</OAuthV2>

नीति सेटिंग

नाम ब्यौरा डिफ़ॉल्ट ज़रूरी है?
OAuthV2 नीति किस तरह की है
name नीति का नाम, जिसका रेफ़रंस एपीआई प्रॉक्सी एंडपॉइंट कॉन्फ़िगरेशन में है. लागू नहीं हां
Operation OAuthV2 नीति के ज़रिए किया जाने वाला कार्रवाई. पुष्टि करने का विकल्प बताने का मतलब है कि आपने ऐक्सेस टोकन के अनुरोधों की जांच करने के लिए, नीति को कॉन्फ़िगर किया है. साथ ही, यह भी पुष्टि की है कि ऐक्सेस टोकन मान्य है, उसकी समयसीमा खत्म नहीं हुई है, और उसे अनुरोध किए गए एपीआई संसाधन (यूआरआई) का इस्तेमाल करने की अनुमति मिल गई है. (यह जांच करने के लिए, नीति उस एपीआई प्रॉडक्ट को पढ़ती है जिसे इस्तेमाल करने के लिए ऐप्लिकेशन को अनुमति दी गई है.) लागू नहीं हां

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

एपीआई प्रॉक्सी की सूची में से, Weatherapi चुनें.

मौसम एपीआई के लिए खास जानकारी से, डेवलप करें व्यू को चुनें.

ड्रॉप-डाउन मेन्यू से, नई नीति > OAuth v2.0 चुनें

OAuth 2.0 नीति को चुनने के बाद, आपको नई नीति का कॉन्फ़िगरेशन मेन्यू दिखेगा.

अपनी नीति को एक जानकारी देने वाला नाम दें और यह पक्का करें कि आपने नीति अटैचमेंट की सेटिंग के तौर पर नीति अटैच करें, Flow PreFlow, और अनुरोध करें को चुना हो.

जोड़ें को चुनें. इसके बाद, नीति बनाई जाती है और मौसम की जानकारी के लिए, PreFlow के अनुरोध के साथ उसे अटैच कर दिया जाता है.

नीति जोड़ने के बाद, नीचे दिया गया PreFlow कॉन्फ़िगरेशन कैसा होगा, यह डिज़ाइनर पैनल में दिखेगा.

अगर किसी टेक्स्ट एडिटर या IDE में स्थानीय तौर पर काम किया जा रहा है, तो आपको उस एपीआई प्रॉक्सी के PreFlow के लिए नीति को अटैच करना होगा जिसे सुरक्षित रखना है:

<PreFlow>
  <Request>
    <Step><Name>VerifyOAuthTokens</Name></Step>
  </Request>
</PreFlow>

PreFlow के लिए नीति को अटैच करके, आप यह पक्का करते हैं कि यह नीति सभी अनुरोध मैसेज पर हमेशा लागू की जाए.

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

सुरक्षित संसाधन को ऐक्सेस करने के लिए, ऐक्सेस टोकन का इस्तेमाल करना

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

$ curl -H "Authorization: Bearer ylSkZIjbdWybfs4fUQe9BqP0LH5Z" http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282

इस एपीआई में OAuthV2 नीति अटैच की गई है. इसलिए, Apigee Edge पुष्टि करेगा कि दिखाया गया ऐक्सेस टोकन मान्य है या नहीं. इसके बाद, वह एपीआई को ऐक्सेस देता है और अनुरोध करने वाले ऐप्लिकेशन को मौसम की रिपोर्ट दिखाता है.

ऐप्लिकेशन को ऐक्सेस टोकन कैसे मिलते हैं? हम अगले सेक्शन में इस बारे में बताएंगे.

ऐक्सेस टोकन पाने के लिए क्लाइंट के क्रेडेंशियल बदलने का तरीका

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

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

आप Apigee Edge पर अपने संगठन में ऐप्लिकेशन रजिस्टर करके, उपभोक्ता कुंजी और सीक्रेट पा सकते हैं.

Apigee Edge के मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) में, अपने संगठन के सभी ऐप्लिकेशन देखे जा सकते हैं.

आपके संगठन में रजिस्टर किए गए ऐप्लिकेशन की सूची दिखेगी.

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

किसी ऐप्लिकेशन की पूरी जानकारी वाली प्रोफ़ाइल देखने के लिए, सूची में से उसे चुनें.

आपने जो ऐप्लिकेशन चुना है उसकी ज़्यादा जानकारी वाले व्यू में, उपभोक्ता कुंजी और उपभोक्ता सीक्रेट वाले फ़ील्ड पर ध्यान दें. ये दो वैल्यू क्लाइंट क्रेडेंशियल हैं, जिनका इस्तेमाल आपको OAuth ऐक्सेस टोकन पाने के लिए करना होगा.

$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/apps \
-u myname:mypass 

यह कॉल, ऐप्लिकेशन आईडी के हिसाब से ऐप्लिकेशन की सूची दिखाता है.

[ "da496fae-2a04-4a5c-b2d0-709278a6f9db", "50e3e831-175b-4a05-8fb6-05a54701af6e" ]

आप ऐप्लिकेशन आईडी पर एक आसान GET कॉल करके किसी ऐप्लिकेशन की प्रोफ़ाइल को वापस पा सकते हैं:

$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/apps/{app_id} \
-u myname:mypass 

उदाहरण के लिए:

$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/apps/da496fae-2a04-4a5c-b2d0-709278a6f9db \
-u myname:mypass 

एपीआई कॉल, आपके बताए गए ऐप्लिकेशन की प्रोफ़ाइल दिखाता है. उदाहरण के लिए, Weatherapp की ऐप्लिकेशन प्रोफ़ाइल में यह JSON फ़ॉर्मैट में होना चाहिए:

{
  "accessType" : "read",
  "apiProducts" : [ ],
  "appFamily" : "default",
  "appId" : "da496fae-2a04-4a5c-b2d0-709278a6f9db",
  "attributes" : [ ],
  "callbackUrl" : "http://weatherapp.com",
  "createdAt" : 1380290158713,
  "createdBy" : "noreply_admin@apigee.com",
  "credentials" : [ {
    "apiProducts" : [ {
      "apiproduct" : "PremiumWeatherAPI",
      "status" : "approved"
    } ],
    "attributes" : [ ],
    "consumerKey" : "bBGAQrXgivA9lKu7NMPyoYpVKNhGar6K",
    "consumerSecret" : "hAr4Gn0gA9vAyvI4",
    "expiresAt" : -1,
    "issuedAt" : 1380290161417,
    "scopes" : [ ],
    "status" : "approved"
  } ],
  "developerId" : "5w95xGkpnjzJDBT4",
  "lastModifiedAt" : 1380290158713,
  "lastModifiedBy" : "noreply_admin@apigee.com",
  "name" : "weatherapp",
  "scopes" : [ ],
  "status" : "approved"
}

consumerKey और consumerSecret की वैल्यू नोट करें. इन क्रेडेंशियल का इस्तेमाल, ऐक्सेस टोकन पाने के लिए किया जाता है. इसका इस्तेमाल, एचटीटीपी अनुरोध में पुष्टि करने के बुनियादी क्रेडेंशियल के तौर पर करके किया जाता है. इसका तरीका नीचे दिखाया गया है. अनुरोध के लिए, अनुमति का टाइप, क्वेरी पैरामीटर के तौर पर दिखाया जाता है. (यह पक्का करें कि Apigee Edge पर आपके संगठन का नाम दिखाने के लिए, वैरिएबल {org_name} की वैल्यू बदल दी गई हो.)

ऐक्सेस टोकन पाने के लिए अनुरोध करना

नीचे दिए गए अनुरोध में, अपने consumerKey की वैल्यू को client_id से बदलें. client_secret के लिए, इससे जुड़े consumerSecret की वैल्यू को बदलें.

$ curl https://{org_name}-test.apigee.net/oauth/client_credential/accesstoken?grant_type=client_credentials -X POST -d 'client_id=bBGAQrXgivA9lKu7NMPyoYpVKNhGar6K&client_secret=hAr4Gn0gA9vAyvI4'

API सेवाएं, उपभोक्ता कुंजी और सीक्रेट की पुष्टि करती हैं. इसके बाद, इस ऐप्लिकेशन के लिए ऐक्सेस टोकन वाला रिस्पॉन्स जनरेट करती हैं:

{
  "issued_at" : "1380892555397",
  "application_name" : "957aa73f-25c2-4ead-8021-adc01f0d2c6b",
  "scope" : "",
  "status" : "approved",
  "api_product_list" : "[oauth-test]",
  "expires_in" : "3599",
  "developer.email" : "tesla@weathersample.com",
  "organization_id" : "0",
  "client_id" : "bBGAQrXgivA9lKu7NMPyoYpVKNhGar6K",
  "access_token" : "ylSkZIjbdWybfs4fUQe9BqP0LH5Z",
  "organization_name" : "rqa",
  "refresh_token_expires_in" : "0",
  "refresh_count" : "0"
}

ऊपर दिए गए जवाब में access_token वैल्यू नोट करें. इस ऐक्सेस टोकन का इस्तेमाल ऐप्लिकेशन, सुरक्षित संसाधनों का रनटाइम ऐक्सेस पाने के लिए करेगा. इस ऐप्लिकेशन के लिए ऐक्सेस टोकन ylSkZIjbdWybfs4fUQe9BqP0LH5Z है.

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

डिफ़ॉल्ट OAuth कॉन्फ़िगरेशन के साथ काम करना

Apigee Edge पर, हर संगठन (यहां तक कि मुफ़्त में आज़माने वाला संगठन भी) के लिए एक OAuth टोकन एंडपॉइंट दिया जाता है. एंडपॉइंट को एपीआई प्रॉक्सी में oauth नाम की नीतियों के हिसाब से पहले से कॉन्फ़िगर किया गया है. Apigee Edge पर खाता बनाते ही, टोकन एंडपॉइंट का इस्तेमाल करना शुरू किया जा सकता है.

डिफ़ॉल्ट OAuth एंडपॉइंट, इस एंडपॉइंट यूआरआई को दिखाता है:

/oauth/client_credential/accesstoken

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

डिफ़ॉल्ट क्लाइंट क्रेडेंशियल टोकन एंडपॉइंट, नेटवर्क पर इस यूआरएल पर दिखाया जाता है:

https://{org_name}-{env_name}.apigee.net/oauth/client_credential/accesstoken

उदाहरण के लिए, अगर आपके संगठन का नाम "apimakers" है, तो यूआरएल यह होगा:

https://apimakers-test.apigee.net/oauth/client_credential/accesstoken

यह वह यूआरएल है जिसे डेवलपर ऐक्सेस टोकन पाने के लिए कॉल करते हैं.

3-लेग्ड OAuth कॉन्फ़िगरेशन

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

OAuth 1.0a

OAuth 1.0a नीति के बारे में ज़्यादा जानकारी के लिए, OAuth v1.0a नीति देखें.

मदद पाना

मदद के लिए, Apigee ग्राहक सहायता देखें.