'पासवर्ड देने का तरीका' लागू करना

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

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

इस विषय के बारे में जानकारी

इस विषय में, OAuth 2.0 के संसाधन के मालिक के पासवर्ड के आधार पर अनुमति देने के फ़्लो के बारे में सामान्य जानकारी दी गई है. साथ ही, इसमें Apigee Edge पर इस फ़्लो को लागू करने के तरीके के बारे में बताया गया है.

ऐसे उदाहरण जो आपके काम आ सकते हैं

  • ऐक्सेस टोकन का अनुरोध करना: पासवर्ड ग्रांट टाइप: इसमें टोकन के अनुरोध को बनाने, पासवर्ड ग्रांट टाइप के लिए OAuthV2 नीति को कॉन्फ़िगर करने, और Edge में नीति के लिए एंडपॉइंट को कॉन्फ़िगर करने का तरीका बताया गया है.
  • oauth-validate-key-secret: GitHub में मौजूद एक सैंपल प्रॉक्सी, जिसे Edge पर डिप्लॉय किया जा सकता है और आज़माया जा सकता है. यह पासवर्ड ग्रांट टाइप का एंड-टू-एंड उदाहरण है. यह सबसे सही तरीका दिखाता है. इसके तहत, पहचान देने वाली कंपनी को उपयोगकर्ता के क्रेडेंशियल भेजने से पहले, क्लाइंट ऐप्लिकेशन के क्रेडेंशियल (कुंजी/सीक्रेट) की पुष्टि की जाती है.

वीडियो

वीडियो: पासवर्ड ग्रांट टाइप लागू करने के बारे में यह वीडियो देखें.

उपयोग के उदाहरण

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

फ़्लो डायग्राम

इस फ़्लो डायग्राम में, संसाधन के मालिक के पासवर्ड के आधार पर अनुमति देने वाले फ़्लो को दिखाया गया है. इसमें Apigee Edge, अनुमति देने वाले सर्वर के तौर पर काम कर रहा है.

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

पासवर्ड ग्रांट टाइप फ़्लो में शामिल चरण

यहां पासवर्ड के ज़रिए अनुमति देने की सुविधा को लागू करने के लिए ज़रूरी चरणों की खास जानकारी दी गई है. इसमें Apigee Edge, अनुमति देने वाले सर्वर के तौर पर काम करता है.

ज़रूरी शर्त: क्लाइंट आईडी और क्लाइंट सीक्रेट कुंजियां पाने के लिए, क्लाइंट ऐप्लिकेशन को Apigee Edge के साथ रजिस्टर करना होगा. ज़्यादा जानकारी के लिए, क्लाइंट ऐप्लिकेशन रजिस्टर करना लेख पढ़ें.

1. उपयोगकर्ता फ़्लो शुरू करता है और क्रेडेंशियल डालता है

जब ऐप्लिकेशन को उपयोगकर्ता के सुरक्षित किए गए संसाधनों को ऐक्सेस करने की ज़रूरत होती है (उदाहरण के लिए, जब उपयोगकर्ता ऐप्लिकेशन में किसी बटन पर क्लिक करता है), तो उसे लॉगिन फ़ॉर्म पर रीडायरेक्ट कर दिया जाता है.

2. ऐप्लिकेशन, Apigee Edge से ऐक्सेस टोकन का अनुरोध करता है

ऐप्लिकेशन, Apigee Edge पर GenerateAccessToken एंडपॉइंट को ऐक्सेस टोकन का अनुरोध भेजता है. इसमें उपयोगकर्ता के क्रेडेंशियल शामिल होते हैं.

यहां POST अनुरोध का एक सैंपल दिया गया है. इसमें इस तरह के ग्रांट के लिए ज़रूरी पैरामीटर शामिल हैं:

$ curl -i \
  -X POST \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -H 'Authorization: Basic c3FIOG9vSGV4VHo4QzAySVg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ' \
  -d 'grant_type=password&username=the-user-name&password=the-users-password' \
  https://docs-test.apigee.net/oauth/token

इसके अलावा, उस कमांड को इस तरह से भी इस्तेमाल किया जा सकता है. इसमें curl के -u विकल्प का इस्तेमाल करके, आपके लिए base64-encoded Basic Authentication हेडर बनाया जाता है.

$ curl -i \
  -X POST \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -u sqH8ooHexTz8C02IX9ORo6rhgq1iSrAl:Z4ljtJdneBOjPMAU \
  -d 'grant_type=password&username=the-user-name&password=the-users-password' \
  https://docs-test.apigee.net/oauth/token

(इनमें से हर निर्देश एक ही लाइन में होना चाहिए.)

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

3. Edge, क्लाइंट ऐप्लिकेशन की पुष्टि करता है

उपयोगकर्ता के नाम और पासवर्ड को पहचान की पुष्टि करने वाली कंपनी को भेजने से पहले, Edge को यह पता होना चाहिए कि अनुरोध करने वाला क्लाइंट ऐप्लिकेशन, भरोसेमंद और मान्य ऐप्लिकेशन है. इसके लिए, एपीआई कॉल पर एपीआई कुंजी की पुष्टि करने की सुविधा का इस्तेमाल किया जा सकता है. कुछ मामलों में, आपको क्लाइंट पासकोड और सीक्रेट, दोनों की पुष्टि करनी पड़ सकती है. api-platform-samples रिपॉज़िटरी on GitHub में, एक सैंपल प्रॉक्सी मौजूद है. इसमें इस वैकल्पिक तकनीक के बारे में बताया गया है.

4. Edge, लॉगिन क्रेडेंशियल प्रोसेस करता है

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

अगर पहचान करने वाली सेवा क्रेडेंशियल की पुष्टि करती है और 200 रिस्पॉन्स देती है, तो Edge अनुरोध को प्रोसेस करना जारी रखेगा. ऐसा न होने पर, Edge अनुरोध को प्रोसेस करना बंद कर देगा और क्लाइंट ऐप्लिकेशन को गड़बड़ी का मैसेज भेजेगा.

5. OAuthV2 नीति लागू होती है

अगर क्रेडेंशियल मान्य हैं, तो प्रोसेसिंग का अगला चरण, पासवर्ड ग्रांट टाइप के लिए कॉन्फ़िगर की गई OAuthV2 नीति को लागू करना है. यहां एक उदाहरण दिया गया है. <UserName> और <PassWord> एलिमेंट ज़रूरी हैं. इन्हें उन फ़्लो वैरिएबल से वापस पाया जा सकता है जिन्हें ExtractVariables नीति के साथ सेव किया गया था. इस नीति के बारे में ज़्यादा जानकारी के लिए, OAuthV2 नीति देखें.

<OAuthV2 name="GetAccessToken">
  <Operation>GenerateAccessToken</Operation>
  <ExpiresIn>360000000</ExpiresIn> 
  <SupportedGrantTypes> 
     <GrantType>password</GrantType> 
  </SupportedGrantTypes> 
  <GrantType>request.queryparam.grant_type</GrantType> 
  <UserName>login</UserName>
  <PassWord>password</PassWord>
  <GenerateResponse/> 
</OAuthV2>

अगर यह नीति लागू होती है, तो क्लाइंट को एक जवाब भेजा जाता है. इसमें ऐक्सेस टोकन होता है. जवाब, JSON फ़ॉर्मैट में होता है. यहां एक उदाहरण दिया गया है. ध्यान दें कि access_token, इन एलिमेंट में से एक है:

{
    "issued_at": "1420258685042",
    "scope": "READ",
    "application_name": "ce1e94a2-9c3e-42fa-a2c6-1ee01815476b",
    "refresh_token_issued_at": "1420258685042",
    "status": "approved",
    "refresh_token_status": "approved",
    "api_product_list": "[PremiumWeatherAPI]",
    "expires_in": "1799",
    "developer.email": "tesla@weathersample.com",
    "organization_id": "0",
    "token_type": "BearerToken",
    "refresh_token": "IFl7jlijYuexu6XVSSjLMJq8SVXGOAAq",
    "client_id": "5jUAdGv9pBouF0wOH5keAVI35GBtx3dT",
    "access_token": "I6daIgMSiUgYX1K2qgQWPi37ztS6",
    "organization_name": "docs",
    "refresh_token_expires_in": "0",
    "refresh_count": "0"
}

6. क्लाइंट, प्रोटेक्टेड एपीआई को कॉल करता है

अब मान्य ऐक्सेस कोड की मदद से, क्लाइंट सुरक्षित किए गए एपीआई को कॉल कर सकता है. इस सिनेरियो में, Apigee Edge (प्रॉक्सी) से अनुरोध किए जाते हैं. Edge की यह ज़िम्मेदारी होती है कि वह ऐक्सेस टोकन की पुष्टि करे. इसके बाद, वह एपीआई कॉल को टारगेट रिसॉर्स सर्वर को पास करे. ऐक्सेस टोकन, Authorization हेडर में पास किए जाते हैं. उदाहरण के लिए:

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