आपको Apigee Edge दस्तावेज़ दिख रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
इस पेज पर जाएं
Apigee X दस्तावेज़. जानकारी
इस विषय में, हम आपको ऐक्सेस टोकन और ऑथराइज़ेशन कोड के लिए अनुरोध करने, कॉन्फ़िगर करने का तरीका बताएंगे OAuth 2.0 एंडपॉइंट और इस्तेमाल किए जा सकने वाले हर ऐक्सेस के लिए नीतियां कॉन्फ़िगर करें type हैं.
नमूना कोड
आपकी सुविधा के लिए, इस विषय में बताई गई नीतियां और एंडपॉइंट यहां उपलब्ध हैं oauth-doc-examples प्रोजेक्ट में GitHub Apigee api-platform-सैंपल रिपॉज़िटरी में. सैंपल कोड डिप्लॉय करके, इसे आज़माया जा सकता है इस विषय में दिखाए गए सैंपल अनुरोधों को देखें. ज़्यादा जानकारी के लिए, प्रोजेक्ट README देखें.
ऐक्सेस टोकन के लिए अनुरोध करना: ऑथराइज़ेशन कोड के ऐक्सेस का टाइप
इस सेक्शन में बताया गया है कि ऑथराइज़ेशन कोड के अनुदान टाइप का इस्तेमाल करके, ऐक्सेस टोकन का अनुरोध कैसे करें फ़्लो. OAuth 2.0 के अलग-अलग तरह के ऐक्सेस के बारे में जानने के लिए, OAuth 2.0 के बारे में जानकारी लेख पढ़ें.
सैंपल अनुरोध
$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' \ -H 'Authorization: Basic c3FIOG9vSGV4VHo4QzAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ' \ -X POST 'https://docs-test.apigee.net/oauth/accesstoken' \ -d 'code=I9dMGHAN&grant_type=authorization_code&redirect_uri=http://example-callback.com'
ज़रूरी है पैरामीटर
डिफ़ॉल्ट रूप से, ये पैरामीटर x-www-form-urlencoded होने चाहिए और
अनुरोध का मुख्य हिस्सा (जैसा कि ऊपर दिए गए उदाहरण में दिखाया गया है); हालांकि, संभव है कि इस डिफ़ॉल्ट को
<GrantType>, <Code>, और
OAuthV2 नीति में मौजूद <RedirectUri> एलिमेंट जो इस नीति से जुड़ा है
/accesstoken एंडपॉइंट. ज़्यादा जानकारी के लिए, OAuthV2 नीति देखें.
- grant_type - वैल्यू पर सेट होना चाहिए
authorization_code. - कोड -
/authorizeसे मिला ऑथराइज़ेशन कोड एंडपॉइंट (या जो भी नाम चुना जाए). अनुमति वाले पेज में ऐक्सेस टोकन का अनुरोध करने के लिए कोड अनुदान प्रकार फ़्लो के बिना, आपको पहले एक प्राधिकरण कोड हासिल करना होगा. नीचे ऑथराइज़ेशन कोड का अनुरोध करना देखें. लागू करना ऑथराइज़ेशन कोड के अनुदान का टाइप. - redirect_uri - आपको यह पैरामीटर तब देना होगा, जब
redirect_uriपैरामीटर, पिछले ऑथराइज़ेशन कोड अनुरोध में शामिल किया गया था. अगर आपनेredirect_uriपैरामीटर को ऑथराइज़ेशन कोड के अनुरोध में शामिल नहीं किया गया और अगर आप यह पैरामीटर नहीं देते हैं, तो यह नीति उस कॉलबैक यूआरएल की वैल्यू का इस्तेमाल करती है जो डेवलपर ऐप्लिकेशन के रजिस्टर होने के दौरान दिया गया था.
ज़रूरी नहीं है पैरामीटर
- state - जवाब के साथ वापस भेजी जाने वाली स्ट्रिंग. आम तौर पर इस्तेमाल किए जाने वाले ऐप्लिकेशन ताकि दूसरी साइटों से किए जाने वाले जालसाज़ी के हमलों को रोका जा सके.
- स्कोप - इससे आपको उन एपीआई प्रॉडक्ट की सूची को फ़िल्टर करने की सुविधा मिलती है जिनके साथ मिंट किए गए टोकन का इस्तेमाल किया जा सकता है. दायरे के बारे में ज़्यादा जानने के लिए, OAuth2 स्कोप के साथ काम करना लेख पढ़ें.
पुष्टि करना
आपको Client-ID और क्लाइंट सीक्रेट को या तो बुनियादी पुष्टि करने वाले हेडर के तौर पर पास करना होगा
(Base64-एन्कोडेड) या फ़ॉर्म पैरामीटर client_id और client_secret के रूप में. आपने लोगों तक पहुंचाया मुफ़्त में
इन वैल्यू को, रजिस्टर किए गए डेवलपर ऐप्लिकेशन से पा सकते हैं. "एन्कोडिंग बेसिक
पुष्टि करने वाले क्रेडेंशियल" में शामिल किया गया है.
सैंपल एंडपॉइंट
यहां ऐक्सेस टोकन जनरेट करने के लिए, एंडपॉइंट कॉन्फ़िगरेशन का सैंपल दिया गया है. यह generateAccessToken नीति, जिसे ऑथराइज़ेशन_code की अनुमति के साथ काम करने के लिए कॉन्फ़िगर किया जाना चाहिए टाइप करें.
...
<Flow name="generate-access-token">
<Description>Generate a token</Description>
<Request>
<Step>
<Name>GenerateAccessToken</Name>
</Step>
</Request>
<Response/>
<Condition>(proxy.pathsuffix MatchesPath "/token") and (request.verb = "POST")</Condition>
</Flow>
...नीति का उदाहरण
यह एक बुनियादी generateAccessToken नीति है, जिसे
authorization_code अनुदान टाइप. वैकल्पिक कॉन्फ़िगरेशन एलिमेंट के बारे में जानकारी के लिए
जिन्हें इस नीति से कॉन्फ़िगर किया जा सकता है, तो OAuthV2 नीति देखें.
<OAuthV2 name="GenerateAccessToken">
<Operation>GenerateAccessToken</Operation>
<ExpiresIn>1800000</ExpiresIn>
<RefreshTokenExpiresIn>86400000</RefreshTokenExpiresIn>
<SupportedGrantTypes>
<GrantType>authorization_code</GrantType>
</SupportedGrantTypes>
<GenerateResponse enabled="true"/>
</OAuthV2>लौटाए जाने वाले प्रॉडक्ट
<GenerateResponse> के चालू होने पर, नीति ऐसा JSON रिस्पॉन्स दिखाती है जो
इसमें ऐक्सेस टोकन शामिल होता है, जैसा कि नीचे दिखाया गया है. इससे authorization_code अनुदान टाइप बनता है
ऐक्सेस टोकन और रीफ़्रेश टोकन, तो जवाब कुछ ऐसा दिख सकता है:
{ "issued_at": "1420262924658", "scope": "READ", "application_name": "ce1e94a2-9c3e-42fa-a2c6-1ee01815476b", "refresh_token_issued_at": "1420262924658", "status": "approved", "refresh_token_status": "approved", "api_product_list": "[PremiumWeatherAPI]", "expires_in": "1799", //--in seconds "developer.email": "tesla@weathersample.com", "organization_id": "0", "token_type": "BearerToken", "refresh_token": "fYACGW7OCPtCNDEnRSnqFlEgogboFPMm", "client_id": "5jUAdGv9pBouF0wOH5keAVI35GBtx3dT", "access_token": "2l4IQtZXbn5WBJdL6EF7uenOWRsi", "organization_name": "docs", "refresh_token_expires_in": "86399", //--in seconds "refresh_count": "0" }
अगर <GenerateResponse> को 'गलत है' पर सेट किया जाता है, तो नीति
जवाब. इसके बजाय, यह फ़्लो वैरिएबल के नीचे दिए गए सेट को
ऐक्सेस टोकन देने की अनुमति.
oauthv2accesstoken.{policy-name}.access_token
oauthv2accesstoken.{policy-name}.expires_in //--in seconds
oauthv2accesstoken.{policy-name}.refresh_token
oauthv2accesstoken.{policy-name}.refresh_token_expires_in //--in seconds
oauthv2accesstoken.{policy-name}.refresh_token_issued_at
oauthv2accesstoken.{policy-name}.refresh_token_statusउदाहरण के लिए:
oauthv2accesstoken.GenerateAccessToken.access_token oauthv2accesstoken.GenerateAccessToken.expires_in oauthv2accesstoken.GenerateAccessToken.refresh_token oauthv2accesstoken.GenerateAccessToken.refresh_token_expires_in oauthv2accesstoken.GenerateAccessToken.refresh_token_issued_at oauthv2accesstoken.GenerateAccessToken.refresh_token_status
ऐक्सेस टोकन का अनुरोध करना: क्लाइंट क्रेडेंशियल देने का टाइप
इस सेक्शन में बताया गया है कि क्लाइंट क्रेडेंशियल ग्रांट टाइप का इस्तेमाल करके, ऐक्सेस टोकन का अनुरोध कैसे किया जाता है. फ़्लो. OAuth 2.0 के अलग-अलग तरह के ऐक्सेस के बारे में जानने के लिए, OAuth 2.0 के बारे में जानकारी लेख पढ़ें.
सैंपल अनुरोध
नीचे दिए गए कॉल में, पुष्टि करने के बुनियादी हेडर को कोड में बदलने के बारे में जानकारी के लिए, यह देखें "पुष्टि करने के बुनियादी क्रेडेंशियल को कोड में बदलना".
$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' \ -H 'Authorization: Basic c3FIOG9vSGV4VHoAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ' \ -X POST 'https://docs-test.apigee.net/oauth/accesstoken' \ -d 'grant_type=client_credentials'
ज़रूरी है पैरामीटर
डिफ़ॉल्ट रूप से, ज़रूरी Grants_type पैरामीटर x-www-form-urlencoded और होना चाहिए
अनुरोध के लेख में दी गई जानकारी (जैसा कि ऊपर दिए गए उदाहरण में बताया गया है); हालांकि, अपने सिस्टम को और बेहतर बनाने के लिए,
यह डिफ़ॉल्ट रूप से, OAuthV2 नीति में <GrantType> एलिमेंट को कॉन्फ़िगर करता है,
इस /accesstoken एंडपॉइंट से अटैच किया गया है. उदाहरण के लिए, आप
पैरामीटर होना चाहिए. ज़्यादा जानकारी के लिए, OAuthV2 नीति देखें.
- grant_type - वैल्यू पर सेट होना चाहिए
client_credentials.
ज़रूरी नहीं है पैरामीटर
- state - जवाब के साथ वापस भेजी जाने वाली स्ट्रिंग. आम तौर पर इस्तेमाल किए जाने वाले ऐप्लिकेशन ताकि दूसरी साइटों से किए जाने वाले जालसाज़ी के हमलों को रोका जा सके.
- स्कोप - इससे आपको उन एपीआई प्रॉडक्ट की सूची को फ़िल्टर करने की सुविधा मिलती है जिनके साथ मिंट किए गए टोकन का इस्तेमाल किया जा सकता है. दायरे के बारे में ज़्यादा जानने के लिए, OAuth2 स्कोप के साथ काम करना लेख पढ़ें.
पुष्टि करना
आपको Client-ID और क्लाइंट सीक्रेट को या तो बुनियादी पुष्टि करने वाले हेडर के तौर पर पास करना होगा
(Base64-एन्कोडेड) या फ़ॉर्म पैरामीटर के रूप मेंclient_id और
client_secret. आपको ये वैल्यू, रजिस्टर किए गए डेवलपर ऐप्लिकेशन से मिलती हैं
अनुरोध से जुड़ी होती है. "कोड में बदलने की बुनियादी जानकारी की पुष्टि करना" भी देखें
क्रेडेंशियल" पर सेट किया गया है.
सैंपल एंडपॉइंट
यहां ऐक्सेस टोकन जनरेट करने के लिए, एंडपॉइंट कॉन्फ़िगरेशन का सैंपल दिया गया है. यह generateAccessToken नीति, जिसे client_क्रेडेंशियल की मंज़ूरी के साथ काम करने के लिए कॉन्फ़िगर किया जाना चाहिए टाइप करें.
...
<Flow name="generate-access-token">
<Request>
<Step>
<Name>GenerateAccessToken</Name>
</Step>
</Request>
<Response/>
<Condition>(proxy.pathsuffix MatchesPath "/token") and (request.verb = "POST")</Condition>
</Flow>
...नीति का उदाहरण
यह एक बुनियादी generateAccessToken नीति है, जिसे
client_credentials अनुदान टाइप. वैकल्पिक कॉन्फ़िगरेशन एलिमेंट के बारे में जानकारी के लिए
जिन्हें इस नीति से कॉन्फ़िगर किया जा सकता है, तो OAuthV2 नीति देखें.
<OAuthV2 name="GenerateAccessToken">
<Operation>GenerateAccessToken</Operation>
<ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes -->
<SupportedGrantTypes>
<GrantType>client_credentials</GrantType>
</SupportedGrantTypes>
<GenerateResponse enabled="true"/>
</OAuthV2>लौटाए जाने वाले प्रॉडक्ट
<GenerateResponse> के चालू होने पर, यह नीति JSON रिस्पॉन्स देती है. नोट जोड़ें
कि client_credentials अनुदान प्रकार के साथ, रीफ़्रेश टोकन काम नहीं करते हैं. सिर्फ़
ऐक्सेस टोकन मिंट किया जाता है. उदाहरण के लिए:
{ "issued_at": "1420260525643", "application_name": "ce1e94a2-9c3e-42fa-a2c6-1ee01815476b", "scope": "READ", "status": "approved", "api_product_list": "[PremiumWeatherAPI]", "expires_in": "1799", //--in seconds "developer.email": "tesla@weathersample.com", "organization_id": "0", "token_type": "BearerToken", "client_id": "5jUAdGv9pBouF0wOH5keAVI35GBtx3dT", "access_token": "XkhU2DFnMGIVL2hvsRHLM00hRWav", "organization_name": "docs" }
अगर <GenerateResponse> को 'गलत है' पर सेट किया जाता है, तो नीति
जवाब. इसके बजाय, यह फ़्लो वैरिएबल के नीचे दिए गए सेट को
ऐक्सेस टोकन देने की अनुमति.
oauthv2accesstoken.{policy-name}.access_token
oauthv2accesstoken.{policy-name}.expires_in //--in secondsउदाहरण के लिए:
oauthv2accesstoken.GenerateAccessToken.access_token oauthv2accesstoken.GenerateAccessToken.expires_in //--in seconds
ऐक्सेस टोकन का अनुरोध करना: पासवर्ड देने की अनुमति का टाइप
इस सेक्शन में बताया गया है कि संसाधन के मालिक के पासवर्ड का इस्तेमाल करके, ऐक्सेस टोकन का अनुरोध कैसे किया जाता है क्रेडेंशियल (पासवर्ड) देने का तरीका. OAuth 2.0 के अलग-अलग तरह के अनुदान के बारे में जानने के लिए, यहां जाएं OAuth 2.0 के बारे में जानकारी.
पासवर्ड देने के तरीके के बारे में ज़्यादा जानकारी पाने के लिए, इसमें चार मिनट का एक वीडियो भी शामिल है. इस वीडियो में, पासवर्ड बनाने का तरीका बताया गया है इसे लागू करने के लिए, पासवर्ड लागू करना देखें अनुमति किस तरह की है.
सैंपल अनुरोध
नीचे दिए गए कॉल में, पुष्टि करने के बुनियादी हेडर को कोड में बदलने के बारे में जानकारी के लिए, यह देखें "पुष्टि करने के बुनियादी क्रेडेंशियल को कोड में बदलना".
$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' \ -H 'Authorization: Basic c3FIOG9vSGV4VHo4QzAySVg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ' \ -X POST https://docs-test.apigee.net/oauth/token \ -d 'grant_type=password&username=the-user-name&password=the-users-password'
ज़रूरी है पैरामीटर
डिफ़ॉल्ट रूप से, ये पैरामीटर x-www-form-urlencoded होने चाहिए और
अनुरोध का मुख्य हिस्सा (जैसा कि ऊपर दिए गए उदाहरण में दिखाया गया है); हालांकि, संभव है कि इस डिफ़ॉल्ट को
<GrantType>, <Username>, और
OAuthV2 नीति में मौजूद <Password> एलिमेंट जो इस नीति से जुड़ा है
/token एंडपॉइंट. ज़्यादा जानकारी के लिए, OAuthV2 नीति देखें.
उपयोगकर्ता क्रेडेंशियल की पुष्टि आम तौर पर LDAP का इस्तेमाल करके क्रेडेंशियल स्टोर के हिसाब से की जाती है या JavaScript नीति.
- grant_type - वैल्यू
passwordपर सेट की जानी चाहिए. - उपयोगकर्ता नाम - संसाधन के मालिक का उपयोगकर्ता नाम.
- password - संसाधन के मालिक का पासवर्ड.
ज़रूरी नहीं है पैरामीटर
- state - जवाब के साथ वापस भेजी जाने वाली स्ट्रिंग. आम तौर पर इस्तेमाल किए जाने वाले ऐप्लिकेशन ताकि दूसरी साइटों से किए जाने वाले जालसाज़ी के हमलों को रोका जा सके.
- स्कोप - इससे आपको उन एपीआई प्रॉडक्ट की सूची को फ़िल्टर करने की सुविधा मिलती है जिनके साथ मिंट किए गए टोकन का इस्तेमाल किया जा सकता है. दायरे के बारे में ज़्यादा जानने के लिए, OAuth2 स्कोप के साथ काम करना लेख पढ़ें.
पुष्टि करना
आपको Client-ID और क्लाइंट सीक्रेट को या तो बुनियादी पुष्टि करने वाले हेडर के तौर पर पास करना होगा
(Base64-एन्कोडेड) या फ़ॉर्म पैरामीटर के रूप मेंclient_id और
client_secret. आपको ये वैल्यू, रजिस्टर किए गए डेवलपर ऐप्लिकेशन से मिलती हैं
अनुरोध से जुड़ी होती है. "कोड में बदलने की बुनियादी जानकारी की पुष्टि करना" भी देखें
क्रेडेंशियल" पर सेट किया गया है.
सैंपल एंडपॉइंट
यहां ऐक्सेस टोकन जनरेट करने के लिए, एंडपॉइंट कॉन्फ़िगरेशन का सैंपल दिया गया है. यह generateAccessToken नीति, जिसे पासवर्ड देने के तरीके के साथ काम करने के लिए कॉन्फ़िगर किया जाना चाहिए.
...
<Flow name="generate-access-token">
<Request>
<Step>
<Name>GenerateAccessToken</Name>
</Step>
</Request>
<Response/>
<Condition>(proxy.pathsuffix MatchesPath "/token") and (request.verb = "POST")</Condition>
</Flow>
...नीति का उदाहरण
यह एक बुनियादी generateAccessToken नीति है जिसे पासवर्ड देने की अनुमति के लिए कॉन्फ़िगर किया गया है टाइप करें. इस नीति की मदद से कॉन्फ़िगर किए जा सकने वाले, वैकल्पिक कॉन्फ़िगरेशन एलिमेंट की जानकारी के लिए, OAuthV2 नीति देखें.
<OAuthV2 name="GenerateAccessToken">
<Operation>GenerateAccessToken</Operation>
<ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes -->
<RefreshTokenExpiresIn>28800000</RefreshTokenExpiresIn> <!-- 8 hours -->
<SupportedGrantTypes>
<GrantType>password</GrantType>
</SupportedGrantTypes>
<GenerateResponse enabled="true"/>
</OAuthV2>लौटाए जाने वाले प्रॉडक्ट
<GenerateResponse> के चालू होने पर, यह नीति JSON रिस्पॉन्स देती है. नोट जोड़ें
कि पासवर्ड ग्रांट टाइप के साथ, ऐक्सेस टोकन और रीफ़्रेश टोकन, दोनों मिंट किए जाते हैं. इसके लिए
उदाहरण:
{ "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", //--in seconds "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": "28799", //--in seconds "refresh_count": "0" }
अगर <GenerateResponse> को 'गलत है' पर सेट किया जाता है, तो नीति
जवाब. इसके बजाय, यह फ़्लो वैरिएबल के नीचे दिए गए सेट को
ऐक्सेस टोकन देने की अनुमति.
oauthv2accesstoken.{policy-name}.access_token
oauthv2accesstoken.{policy-name}.expires_in //--in seconds
oauthv2accesstoken.{policy-name}.refresh_token
oauthv2accesstoken.{policy-name}.refresh_token_expires_in //--in seconds
oauthv2accesstoken.{policy-name}.refresh_token_issued_at
oauthv2accesstoken.{policy-name}.refresh_token_statusउदाहरण के लिए:
oauthv2accesstoken.GenerateAccessToken.access_token oauthv2accesstoken.GenerateAccessToken.expires_in oauthv2accesstoken.GenerateAccessToken.refresh_token oauthv2accesstoken.GenerateAccessToken.refresh_token_expires_in oauthv2accesstoken.GenerateAccessToken.refresh_token_issued_at oauthv2accesstoken.GenerateAccessToken.refresh_token_status
ऐक्सेस टोकन का अनुरोध करना: इंप्लिसिट ग्रांट टाइप
इस सेक्शन में बताया गया है कि इंप्लिसिट ग्रांट टाइप फ़्लो का इस्तेमाल करके, ऐक्सेस टोकन के लिए अनुरोध कैसे किया जाता है. इसके लिए OAuth 2.0 के अलग-अलग तरह के ऐक्सेस के बारे में जानकारी, OAuth 2.0 के बारे में जानकारी देखें.
सैंपल अनुरोध
$ curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \ 'https://docs-test.apigee.net/oauth/implicit?response_type=token&client_id=ABC123&redirect_uri=http://callback-example.com'
ज़रूरी है पैरामीटर
डिफ़ॉल्ट रूप से, ये पैरामीटर क्वेरी पैरामीटर होने चाहिए (जैसा कि ऊपर दिए गए नमूने में दिखाया गया है); हालांकि,
<ResponseType> को कॉन्फ़िगर करके, इस डिफ़ॉल्ट सेटिंग को बदला जा सकता है.
OAuthV2 में <ClientId> और <RedirectUri> एलिमेंट
यह नीति /token एंडपॉइंट से अटैच की गई है. ज़्यादा जानकारी के लिए, OAuthV2 नीति देखें.
उपयोगकर्ता क्रेडेंशियल की पुष्टि आम तौर पर LDAP सेवा का इस्तेमाल करके, क्रेडेंशियल स्टोर से की जाती है कॉलआउट या JavaScript नीति के दायरे में आता है.
- response_type - वैल्यू
tokenपर सेट की जानी चाहिए. - client_id - रजिस्टर किए गए डेवलपर ऐप्लिकेशन का क्लाइंट आईडी.
- redirect_uri - अगर कॉलबैक यूआरआई नहीं दिया जाता, तो यह पैरामीटर ज़रूरी है यह सूचना तब दी जाती है, जब क्लाइंट डेवलपर ऐप्लिकेशन रजिस्टर किया गया हो. अगर क्लाइंट पर कॉलबैक यूआरएल दिया गया था पंजीकरण के लिए है, तो इसकी तुलना इस मान से की जाएगी और यह हूबहू मेल खाना चाहिए.
ज़रूरी नहीं है पैरामीटर
- state - जवाब के साथ वापस भेजी जाने वाली स्ट्रिंग. आम तौर पर इस्तेमाल किए जाने वाले ऐप्लिकेशन ताकि दूसरी साइटों से किए जाने वाले जालसाज़ी के हमलों को रोका जा सके.
- स्कोप - इससे आपको उन एपीआई प्रॉडक्ट की सूची को फ़िल्टर करने की सुविधा मिलती है जिनके साथ मिंट किए गए टोकन का इस्तेमाल किया जा सकता है. दायरे के बारे में ज़्यादा जानने के लिए, OAuth2 स्कोप के साथ काम करना लेख पढ़ें.
पुष्टि करना
इंप्लिसिट ग्रांट के लिए बुनियादी पुष्टि की ज़रूरत नहीं होती. आपको क्लाइंट आईडी को request पैरामीटर, जैसा कि यहां बताया गया है.
सैंपल एंडपॉइंट
यहां ऐक्सेस टोकन जनरेट करने के लिए, एंडपॉइंट कॉन्फ़िगरेशन का सैंपल दिया गया है. यह generateAccessTokenImplicitgrant नीति.
... <Flow name="generate-access-token-implicit"> <Request> <Step> <Name>GenerateAccessTokenImplicitGrant</Name> </Step> </Request> <Response/> <Condition>(proxy.pathsuffix MatchesPath "/implicit") and (request.verb = "POST")</Condition> </Flow> ...
नीति का उदाहरण
यह एक बुनियादी generateAccessTokenImplicit Grants नीति है जो टोकन के लिए अनुरोधों को प्रोसेस करती है इंप्लिसिट ग्रांट टाइप फ़्लो. कॉन्फ़िगरेशन के वैकल्पिक एलिमेंट के बारे में जानकारी के लिए, ये काम किए जा सकते हैं कॉन्फ़िगर करने के लिए, OAuthV2 नीति देखें.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<OAuthV2 name="GenerateAccessTokenImplicit">
<DisplayName>GenerateAccessTokenImplicit</DisplayName>
<Operation>GenerateAccessTokenImplicitGrant</Operation>
<GenerateResponse enabled="true"/>
</OAuthV2>लौटाए जाने वाले प्रॉडक्ट
<GenerateResponse> चालू होने पर, यह नीति 302 लोकेशन रीडायरेक्ट दिखाती है
रिस्पॉन्स हेडर में. रीडायरेक्ट, redirect_uri में बताए गए यूआरएल पर ले जाता है
पैरामीटर को ऐक्सेस टोकन और टोकन की समयसीमा खत्म होने की तारीख के साथ जोड़ा जाता है. ध्यान दें कि इंप्लिसिट
अनुदान प्रकार रीफ़्रेश टोकन का समर्थन नहीं करता. उदाहरण के लिए:
https://callback-example.com#expires_in=1799&access_token=In4dKm4ueoGZRbIYJhC9yZCmTFw5
अगर <GenerateResponse> को 'गलत है' पर सेट किया जाता है, तो नीति
जवाब. इसके बजाय, यह फ़्लो वैरिएबल के नीचे दिए गए सेट को
ऐक्सेस टोकन देने की अनुमति.
oauthv2accesstoken.{policy-name}.access_token
oauthv2accesstoken.{policy-name}.expires_in //--in secondsउदाहरण के लिए:
oauthv2accesstoken.GenerateAccessToken.access_token oauthv2accesstoken.GenerateAccessToken.expires_in //--in seconds
ऑथराइज़ेशन कोड का अनुरोध करना
अगर ऑथराइज़ेशन कोड के ग्रांट टाइप फ़्लो का इस्तेमाल किया जा रहा है, तो आपको कोड दिखाई दे सकता है.
अनुरोध का सैंपल
$ curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \ 'http://myorg-test.apigee.net/oauth/authorize?client_id={consumer_key}&response_type=code'
जहां OAuthV2 generateAuthorizationCode नीति अटैच की गई है
/oauth/authorize प्रॉक्सी एंडपॉइंट (नीचे दिया गया सैंपल एंडपॉइंट देखें).
ज़रूरी है पैरामीटर
डिफ़ॉल्ट रूप से, ये पैरामीटर क्वेरी पैरामीटर होने चाहिए (जैसा कि ऊपर दिए गए नमूने में दिखाया गया है); हालांकि,
<ResponseType> को कॉन्फ़िगर करके, इस डिफ़ॉल्ट सेटिंग को बदला जा सकता है.
OAuthV2 में <ClientId> और <RedirectUri> एलिमेंट
यह नीति /authorize एंडपॉइंट से अटैच की गई है. ज़्यादा जानकारी के लिए, OAuthV2 नीति देखें.
- response_type - वैल्यू
codeपर सेट की जानी चाहिए. - client_id - रजिस्टर किए गए डेवलपर ऐप्लिकेशन का क्लाइंट आईडी.
ज़रूरी नहीं है पैरामीटर
- redirect_uri - अगर इसमें पूरा (आंशिक नहीं) कॉलबैक यूआरआई दिया गया है रजिस्टर किए गए क्लाइंट ऐप्लिकेशन के लिए, यह पैरामीटर ज़रूरी नहीं है; अगर ऐसा नहीं है, तो यह ज़रूरी है. कॉलबैक वह यूआरएल है जहां Edge नया पुष्टि करने वाला कोड भेजता है. यह भी देखें ऐप्लिकेशन रजिस्टर करें और एपीआई मैनेज करें कुंजियां.
- state - जवाब के साथ वापस भेजी जाने वाली स्ट्रिंग. आम तौर पर इस्तेमाल किए जाने वाले ऐप्लिकेशन ताकि दूसरी साइटों पर किए जाने वाले जालसाज़ी के हमलों को रोका जा सके.
- स्कोप - इससे आपको उन एपीआई प्रॉडक्ट की सूची को फ़िल्टर करने की सुविधा मिलती है जिनके साथ मिंट किए गए टोकन का इस्तेमाल किया जा सकता है. दायरे के बारे में ज़्यादा जानने के लिए, OAuth2 स्कोप के साथ काम करना लेख पढ़ें.
पुष्टि करना
पुष्टि करने के लिए बुनियादी तरीकों की ज़रूरत नहीं होती. हालांकि, रजिस्टर किए गए क्लाइंट ऐप्लिकेशन के क्लाइंट आईडी को यह ज़रूरी है अनुरोध में शामिल की जानी चाहिए.
सैंपल एंडपॉइंट
यहां ऑथराइज़ेशन कोड जनरेट करने के लिए, एंडपॉइंट कॉन्फ़िगरेशन का सैंपल दिया गया है:
<OAuthV2 name="GenerateAuthorizationCode"> <Operation>GenerateAuthorizationCode</Operation> <!-- ExpiresIn, in milliseconds. The ref is optional. The explicitly specified value is the default, when the variable reference cannot be resolved. 60000 = 1 minute 120000 = 2 minutes --> <ExpiresIn>60000</ExpiresIn> <GenerateResponse enabled="true"/> </OAuthV2>
नीति का उदाहरण
यह एक बुनियादी generateAuthorizationCode नीति है. वैकल्पिक कॉन्फ़िगरेशन के बारे में जानकारी के लिए जिन एलिमेंट को इस नीति की मदद से कॉन्फ़िगर किया जा सकता है उनके बारे में जानने के लिए, OAuthV2 नीति देखें.
<OAuthV2 name="GenerateAuthorizationCode">
<Operation>GenerateAuthorizationCode</Operation>
<GenerateResponse enabled="true"/>
</OAuthV2>लौटाए जाने वाले प्रॉडक्ट
<GenerateResponse> के चालू होने पर, नीति ?code दिखाती है
अनुमति के साथ, redirect_uri (कॉलबैक यूआरआई) लोकेशन के लिए क्वेरी पैरामीटर
कोड अटैच किया गया. इसे 302 ब्राउज़र रीडायरेक्ट के ज़रिए,
जवाब. उदाहरण के लिए: ?code=123456.
अगर <GenerateResponse> को false पर सेट किया जाता है, तो नीति
कोई जवाब दें. इसके बजाय, यह फ़्लो वैरिएबल के नीचे दिए गए सेट को, आपके टारगेट किए गए डेटा से
को भी सीमित करना होगा.
oauthv2authcode.{policy-name}.code
oauthv2authcode.{policy-name}.scope
oauthv2authcode.{policy-name}.redirect_uri
oauthv2authcode.{policy-name}.client_idउदाहरण के लिए:
oauthv2authcode.GenerateAuthorizationCode.code oauthv2authcode.GenerateAuthorizationCode.scope oauthv2authcode.GenerateAuthorizationCode.redirect_uri oauthv2authcode.GenerateAuthorizationCode.client_id
ऐक्सेस टोकन को रीफ़्रेश करना
रीफ़्रेश टोकन एक क्रेडेंशियल है, जिसका इस्तेमाल ऐक्सेस टोकन पाने के लिए किया जाता है. आम तौर पर, ऐक्सेस टोकन ऐक्सेस करने के बाद टोकन की समयसीमा खत्म हो गई है या यह अमान्य हो गया है. रीफ़्रेश टोकन रिस्पॉन्स में तब दिखता है, जब ऐक्सेस टोकन मिलता है.
रीफ़्रेश टोकन का इस्तेमाल करके नए ऐक्सेस टोकन का अनुरोध करने के लिए:
अनुरोध का सैंपल
नीचे दिए गए कॉल में, पुष्टि करने के बुनियादी हेडर को कोड में बदलने के बारे में जानकारी के लिए, यह देखें "पुष्टि करने के बुनियादी क्रेडेंशियल को कोड में बदलना".
$ curl -X POST \ -H "Content-type: application/x-www-form-urlencoded" \ -H 'Authorization: Basic c3FIOG9vSGV4VHo4QzAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ' \ https://myorg-test.apigee.net/my_oauth_endpoint/refresh_accesstoken \ -d 'grant_type=refresh_token&refresh_token=my-refresh-token'
ज़रूरी पैरामीटर
- grant_type - वैल्यू
refresh_tokenपर सेट की जानी चाहिए. - refresh_token - रीफ़्रेश टोकन उस ऐक्सेस टोकन से जुड़ा होता है जो आपने नवीनीकृत करना चाहते हैं.
डिफ़ॉल्ट रूप से, नीति इनके लिए x-www-form-urlencoded पैरामीटर के तौर पर काम करती है
जैसा कि ऊपर दिए गए उदाहरण में बताया गया है. वैकल्पिक जगह कॉन्फ़िगर करने के लिए
इन इनपुट के लिए, <GrantType> और
OAuthV2 नीति में <RefreshToken> एलिमेंट हैं. ज़्यादा जानकारी के लिए, OAuthV2 नीति देखें.
वैकल्पिक पैरामीटर
- state - जवाब के साथ वापस भेजी जाने वाली स्ट्रिंग. आम तौर पर इस्तेमाल किए जाने वाले ऐप्लिकेशन ताकि दूसरी साइटों पर किए जाने वाले जालसाज़ी के हमलों को रोका जा सके.
- स्कोप - इससे आपको उन एपीआई प्रॉडक्ट की सूची को फ़िल्टर करने की सुविधा मिलती है जिनके साथ मिंट किए गए टोकन का इस्तेमाल किया जा सकता है. दायरे के बारे में ज़्यादा जानने के लिए, OAuth2 स्कोप के साथ काम करना लेख पढ़ें.
पुष्टि करना
- client_id
- client_secret
आपको Client-ID और क्लाइंट सीक्रेट को या तो बुनियादी पुष्टि करने वाले हेडर के तौर पर पास करना होगा
(Base64-एन्कोडेड) या फ़ॉर्म पैरामीटर client_id और client_secret के रूप में. यहां जाएं:
साथ ही, "पुष्टि करने के बुनियादी क्रेडेंशियल को कोड में बदलने का तरीका" भी शामिल हो सकता है.
ऐक्सेस टोकन को रीफ़्रेश करने पर, उपयोगकर्ता की फिर से पुष्टि करने की ज़रूरत नहीं होती.
यहां रीफ़्रेश टोकन का इस्तेमाल करके ऐक्सेस टोकन जनरेट करने के लिए, एंडपॉइंट कॉन्फ़िगरेशन का सैंपल दिया गया है. यह RefreshAccessToken नीति को लागू करेगा.
...
<Flow name="generate-refresh-token">
<Request>
<Step>
<Name>RefreshAccessToken</Name>
</Step>
</Request>
<Response/>
<Condition>(proxy.pathsuffix MatchesPath "/refresh") and (request.verb = "POST")</Condition>
</Flow>
...नीति का उदाहरण
यह एक बुनियादी RefreshAccessToken नीति है, जिसे
refresh_token अनुदान टाइप. उन वैकल्पिक कॉन्फ़िगरेशन एलिमेंट की जानकारी के लिए जो
अगर आपको इस नीति से कॉन्फ़िगर करना है, तो OAuthV2 नीति देखें.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<OAuthV2 name="RefreshAccessToken">
<Operation>RefreshAccessToken</Operation>
<GenerateResponse enabled="true"/>
<ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes -->
<RefreshTokenExpiresIn>28800000</RefreshTokenExpiresIn> <!-- 8 hours -->
</OAuthV2>लौटाए जाने वाले प्रॉडक्ट
<GenerateResponse> के चालू होने पर, यह नीति JSON रिस्पॉन्स देती है
जिसमें नया ऐक्सेस टोकन शामिल है. refresh_token अनुदान टाइप, दोनों को मिंट करने की सुविधा देता है
और नए रीफ़्रेश टोकन ऐक्सेस करें. उदाहरण के लिए:
{ "issued_at": "1420301470489", "application_name": "ce1e94a2-9c3e-42fa-a2c6-1ee01815476b", "scope": "READ", "refresh_token_issued_at": "1420301470489", "status": "approved", "refresh_token_status": "approved", "api_product_list": "[PremiumWeatherAPI]", "expires_in": "1799", //--in seconds "developer.email": "tesla@weathersample.com", "token_type": "BearerToken", "refresh_token": "8fKDHLryAD9KFBsrpixlq3qPJnG2fdZ5", "client_id": "5jUAdGv9pBouF0wOH5keAVI35GBtx3dT", "access_token": "jmZ2Hqv3iNsABUtAAsfWR3QGNctw", "organization_name": "docs", "refresh_token_expires_in": "28799", //--in seconds "refresh_count": "2" }
ध्यान रखें कि नए रीफ़्रेश टोकन को बनाने के बाद, ओरिजनल टोकन मान्य नहीं रहता.
अगर <GenerateResponse> को 'सही' पर सेट किया जाता है, तो ऊपर दिया गया रिस्पॉन्स मिलता है.
अगर <GenerateResponse> को 'गलत है' पर सेट किया जाता है, तो नीति कोई जवाब नहीं देती.
इसके बजाय, यह कॉन्टेक्स्ट (फ़्लो) वैरिएबल के नीचे दिए गए सेट को
ऐक्सेस टोकन देने की अनुमति.
oauthv2accesstoken.{policy-name}.access_token
oauthv2accesstoken.{policy-name}.expires_in //--in seconds
oauthv2accesstoken.{policy-name}.refresh_token
oauthv2accesstoken.{policy-name}.refresh_token_expires_in //--in seconds
oauthv2accesstoken.{policy-name}.refresh_token_issued_at
oauthv2accesstoken.{policy-name}.refresh_token_statusउदाहरण के लिए:
oauthv2accesstoken.RefreshAccessToken.access_token oauthv2accesstoken.RefreshAccessToken.expires_in oauthv2accesstoken.RefreshAccessToken.refresh_token oauthv2accesstoken.RefreshAccessToken.refresh_token_expires_in oauthv2accesstoken.RefreshAccessToken.refresh_token_issued_at oauthv2accesstoken.RefreshAccessToken.refresh_token_status
कोड में बदलने का तरीका पुष्टि करने के लिए बेसिक क्रेडेंशियल
जब किसी टोकन या ऑथराइज़ेशन कोड का अनुरोध करने के लिए एपीआई कॉल किया जाता है, तो यह एक अच्छा तरीका है. OAuth 2.0 स्पेसिफ़िकेशन के मुताबिक, client_id और client_secret वैल्यू को एक एचटीटीपी-बेसिक पुष्टि करने वाला हेडर होना चाहिए, जैसा कि आईईटीएफ़ आरएफ़सी 2617 में बताया गया है. ऐसा करने के लिए, आपको दोनों वैल्यू को एक साथ जोड़ने पर मिलने वाले नतीजे को base64 कोड में बदलें. ऐसा कोलन से अलग करते हुए किया जाता है.
स्यूडो-कोड में:
result = Base64Encode(concat('ns4fQc14Zg4hKFCNaSzArVuwszX95X', ':', 'ZIjFyTsNgQNyxI'))इस उदाहरण में, ns4fQc14Zg4hKFCNaSzArVuwszX95X एक client_id है और
ZIjFyTsNgQNyxI, क्लाइंट सीक्रेट है.
भले ही, आप base64 कोड में बदली गई वैल्यू को कंप्यूट करने के लिए किसी भी प्रोग्रामिंग भाषा का इस्तेमाल करें
क्लाइंट क्रेडेंशियल के आधार पर, base64 कोड में बदला गया नतीजा यह होगा:
bnM0ZlFjMTRaZzRoS0ZDTmFTekFyVnV3c3pYOTVYOlpJakZ5VHNOZ1FOeXhJOg== अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
इसके बाद, इस तरह टोकन के लिए अनुरोध किया जा सकता है:
$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' \ -H 'Authorization: Basic bnM0ZlFjMTRaZzRoS0ZDTmFTekFyVnV3c3pYOTVYOlpJakZ5VHNOZ1FOeXhJOg==' \ -X POST 'https://docs-test.apigee.net/oauth/accesstoken' \ -d 'grant_type=client_credentials'
अगर आपcurl
-u विकल्प चुनें. यह ऊपर दिए गए विकल्पों के बराबर है:
$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' \ -u 'ns4fQc14Zg4hKFCNaSzArVuwszX95X:ZIjFyTsNgQNyxI' \ -X POST 'https://docs-test.apigee.net/oauth/accesstoken' \ -d 'grant_type=client_credentials'
दूसरे प्रोग्रामिंग एनवायरमेंट में इससे मिलते-जुलते शॉर्टकट हो सकते हैं. इनकी मदद से, अपने-आप base64 कोड में बदला गया हेडर.
डेटाबेस में हैशिंग टोकन
डेटाबेस की सुरक्षा के उल्लंघन की स्थिति में, OAuth के ऐक्सेस और रीफ़्रेश टोकन की सुरक्षा के लिए ये काम किए जा सकते हैं अपने Edge संगठन में ऑटोमैटिक टोकन हैशिंग चालू करें. सुविधा के सक्षम होने पर Edge इसका इस्तेमाल करके, अपने-आप नए OAuth ऐक्सेस और रीफ़्रेश टोकन का हैश किया गया वर्शन बनाता है एल्गोरिदम का इस्तेमाल करें. (मौजूदा टोकन को बल्क-हैश करने के बारे में जानकारी यहां दी गई है.) कॉन्टेंट बनाने बिना हैश किए गए टोकन, एपीआई कॉल में इस्तेमाल किए जाते हैं. Edge, हैश किए गए वर्शन के हिसाब से इनकी पुष्टि करता है: डेटाबेस.
संगठन-लेवल की नीचे दी गई प्रॉपर्टी, OAuth टोकन की हैशिंग को कंट्रोल करती हैं.
features.isOAuthTokenHashingEnabled = true features.OAuthTokenHashingAlgorithm = SHA1 | SHA256 | SHA384 | SHA512 | PLAIN
अगर आपके पास हैश किए गए मौजूदा टोकन हैं और आपको उनकी समयसीमा खत्म होने तक उन्हें बनाए रखना है, तो ये प्रॉपर्टी आपके संगठन की इन प्रॉपर्टी में इस्तेमाल की जाती हैं, जिनमें हैशिंग एल्गोरिदम मौजूदा एल्गोरिदम (उदाहरण के लिए, SHA1, पुराना Edge डिफ़ॉल्ट). अगर टोकन हैश नहीं किए गए थे, तो इनका इस्तेमाल करें: प्लेइन.
features.isOAuthTokenFallbackHashingEnabled = true features.OAuthTokenFallbackHashingAlgorithm = SHA1 | SHA256 | SHA384 | SHA512 | PLAIN
अगर आप Edge Cloud के ग्राहक हैं, तो इन्हें सेट करने के लिए Apigee Edge की सहायता टीम से संपर्क करें प्रॉपर्टी को ट्रांसफ़र किया जा सकता है. साथ ही, मौजूदा टोकन को बल्क में हैश किया जा सकता है.
मिलते-जुलते विषय
- लागू करने के लिए क्लाइंट क्रेडेंशियल के अनुमति का टाइप
- लागू करना ऑथराइज़ेशन कोड के ऐक्सेस का टाइप
- एपीआई सुरक्षा से जुड़ा ऑनलाइन कोर्स (इसमें OAuth शामिल है)
- OAuthV2 नीति -- जिनमें ये शामिल हैं बहुत सारे उदाहरण, जो पुष्टि करने वाले सर्वर से अनुरोध करने और उन्हें कॉन्फ़िगर करने का तरीका दिखाते हैं OAuthV2 नीति के मुताबिक कार्रवाई की जा सकती है.