Apigee Edge दस्तावेज़ देखा जा रहा है.
Apigee X दस्तावेज़ पर जाएं. जानकारी
यह क्या है
OAuthV2, OAuth 2.0 अनुदान प्रकार कार्रवाइयां करने के लिए एक बहु-आयामी नीति है. यह मुख्य नीति है, जिसका इस्तेमाल Apigee Edge पर OAuth 2.0 एंडपॉइंट को कॉन्फ़िगर करने के लिए किया जाता है.
सलाह: अगर आपको Apigee Edge पर OAuth के बारे में ज़्यादा जानना है, तो OAuth का होम पेज देखें. इसमें रिसॉर्स, सैंपल, वीडियो वगैरह के लिंक दिए गए हैं. GitHub पर बेहतर OAuth सैंपल देखें. इससे आपको पता चलेगा कि काम करने वाले ऐप्लिकेशन में इस नीति का इस्तेमाल कैसे किया जाता है.
सैंपल
VerifyAccessToken
VerifyAccessToken
OAuthV2 नीति का यह कॉन्फ़िगरेशन (VerifyAccessToken कार्रवाई के साथ) इस बात की पुष्टि करता है कि Apigee Edge पर सबमिट किया गया ऐक्सेस टोकन मान्य है या नहीं. जब इस नीति से जुड़ी कार्रवाई ट्रिगर होती है, तो Edge अनुरोध में एक मान्य ऐक्सेस टोकन खोजता है. अगर ऐक्सेस टोकन मान्य है, तो अनुरोध को आगे बढ़ाने की अनुमति होती है. अमान्य होने पर, प्रोसेस बंद हो जाती है और रिस्पॉन्स में गड़बड़ी दिखती है.
<OAuthV2 async="false" continueOnError="false" enabled="true" name="OAuth-v20-2"> <DisplayName>OAuth v2.0 2</DisplayName> <Operation>VerifyAccessToken</Operation> <AccessTokenPrefix>Bearer</AccessTokenPrefix> <!-- Optional, default is Bearer --> </OAuthV2>
ध्यान दें: सिर्फ़ OAuth 2.0 बेयरर टोकन काम करते हैं. मैसेज की पुष्टि करने वाला कोड (MAC) टोकन इस्तेमाल नहीं किए जा सकते.
उदाहरण के लिए:
$ curl -H "Authorization: Bearer ylSkZIjbdWybfsUQe9BqP0LH5Z" http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282
डिफ़ॉल्ट रूप से, Edge Bearer
प्रीफ़िक्स के साथ Authorization
हेडर में
ऐक्सेस टोकन स्वीकार करता है. <AccessToken>
एलिमेंट का इस्तेमाल करके, इस डिफ़ॉल्ट सेटिंग को बदला जा सकता है.
GenerateAccessToken
ऐक्सेस टोकन जनरेट किए जा रहे हैं
इस्तेमाल किए जा सकने वाले हर तरह के अनुदान के लिए, ऐक्सेस टोकन के अनुरोध का तरीका जानने के लिए, ऐक्सेस टोकन और ऑथराइज़ेशन कोड का अनुरोध करना देखें. इस विषय में इन कार्रवाइयों के उदाहरण शामिल हैं:
GenerateAuthorizationCode
ऑथराइज़ेशन कोड जनरेट करें
ऑथराइज़ेशन कोड का अनुरोध करने का तरीका जानने के लिए, ऑथराइज़ेशन कोड का अनुरोध करना लेख पढ़ें.
RefreshAccessToken
ऐक्सेस टोकन को रीफ़्रेश करना
रीफ़्रेश टोकन का इस्तेमाल करके, ऐक्सेस टोकन के लिए अनुरोध करने का तरीका जानने के लिए, ऐक्सेस टोकन को रीफ़्रेश करना लेख पढ़ें.
रिस्पॉन्स फ़्लो टोकन
रिस्पॉन्स फ़्लो में ऐक्सेस टोकन जनरेट करना
कभी-कभी, जवाब देने के दौरान आपको ऐक्सेस टोकन जनरेट करना पड़ सकता है. उदाहरण के लिए, बैकएंड सेवा में पसंद के मुताबिक की गई कुछ पुष्टि के बाद ऐसा किया जा सकता है. इस उदाहरण में, इस्तेमाल के उदाहरण में ऐक्सेस टोकन और रीफ़्रेश टोकन, दोनों की ज़रूरत होगी. इससे इंप्लिसिट ग्रांट टाइप तय होता है. इस मामले में, हम टोकन जनरेट करने के लिए पासवर्ड ग्रांट टाइप का इस्तेमाल करेंगे. जैसा कि आप देखेंगे, इस काम को करने का एक तरीका यह है कि आप JavaScript नीति के साथ अनुमति देने के अनुरोध के हेडर को पास करें.
आइए, सबसे पहले सैंपल नीति के बारे में जानते हैं:
<OAuthV2 enabled="true" continueOnError="false" async="false" name="generateAccessToken"> <Operation>GenerateAccessToken</Operation> <AppEndUser>Doe</AppEndUser> <UserName>jdoe</UserName> <PassWord>jdoe</PassWord> <GrantType>grant_type</GrantType> <ClientId>a_valid_client_id</ClientId> <SupportedGrantTypes> <GrantType>password</GrantType> </SupportedGrantTypes> </OAuthV2>
अगर इस नीति को रिस्पॉन्स फ़्लो पर रखा जाता है, तो नीति में सही लॉगिन पैरामीटर दिए गए होने पर भी, 401 'अनुमति नहीं है' गड़बड़ी वाला मैसेज दिखेगा. इस समस्या को हल करने के लिए, आपको अनुमति देने के अनुरोध का हेडर सेट करना होगा.
अनुमति वाले हेडर में, Base64 कोड में बदले गए client_id:client_secret के साथ बेसिक ऐक्सेस स्कीम शामिल होनी चाहिए.
आपके पास इस हेडर को OAuthV2 नीति से ठीक पहले वाली JavaScript नीति की मदद से जोड़ने का विकल्प होता है. उदाहरण के लिए, "local_clientid" और "local_secret" वैरिएबल, पहले से ही सेट होने चाहिए और फ़्लो में उपलब्ध होने चाहिए:
var client_id = context.getVariable("local_clientid"); var client_secret = context.getVariable("local_secret"); context.setVariable("request.header.Authorization","Basic "+CryptoJS.enc.Base64.stringify(CryptoJS.enc.Latin1 .parse(client_id + ':' + client_secret)));
"पुष्टि करने के बुनियादी क्रेडेंशियल को कोड में बदलने का तरीका" भी देखें.
एलिमेंट के बारे में जानकारी
नीति के रेफ़रंस में, OAuthV2 नीति के एलिमेंट और एट्रिब्यूट के बारे में बताया गया है.
नीचे दी गई नीति का उदाहरण, कई संभावित कॉन्फ़िगरेशन में से एक है. यह सैंपल, generateAccessToken कार्रवाई के लिए कॉन्फ़िगर की गई OAuthV2 नीति दिखाता है. इसमें ज़रूरी और वैकल्पिक एलिमेंट शामिल होते हैं. ज़्यादा जानने के लिए, इस सेक्शन में एलिमेंट के बारे में दी गई जानकारी देखें.
<OAuthV2 name="GenerateAccessToken"> <!-- This policy generates an OAuth 2.0 access token using the client_credentials grant type --> <Operation>GenerateAccessToken</Operation> <!-- This is in millseconds, so expire in an hour --> <ExpiresIn>3600000</ExpiresIn> <SupportedGrantTypes> <GrantType>client_credentials</GrantType> </SupportedGrantTypes> <GrantType>request.queryparam.grant_type</GrantType> <GenerateResponse/> </OAuthV2>
<OAuthV2> एट्रिब्यूट
<OAuthV2 async="false" continueOnError="false" enabled="true" name="MyOAuthPolicy">
इस टेबल में उन एट्रिब्यूट के बारे में बताया गया है जो नीति के सभी पैरंट एलिमेंट के लिए एक जैसे होते हैं:
एट्रिब्यूट | ब्यौरा | डिफ़ॉल्ट | मौजूदगी |
---|---|---|---|
name |
नीति का अंदरूनी नाम. इसके अलावा, मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) प्रॉक्सी एडिटर में नीति को आम भाषा में अलग नाम से लेबल करने के लिए, |
लागू नहीं | ज़रूरी है |
continueOnError |
इस नीति को किसी नीति के काम न करने पर भी फ़्लो एक्ज़ीक्यूट करने की प्रोसेस को जारी रखने के लिए, |
false | ज़रूरी नहीं |
enabled |
नीति लागू करने के लिए, नीति को बंद करने के लिए, |
सही | ज़रूरी नहीं |
async |
यह एट्रिब्यूट अब काम नहीं करता. |
false | बहिष्कृत |
<DisplayName> एलिमेंट
मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) प्रॉक्सी एडिटर में, आम भाषा के अलग नाम से नीति को लेबल करने के लिए, name
एट्रिब्यूट का इस्तेमाल करें.
<DisplayName>Policy Display Name</DisplayName>
डिफ़ॉल्ट |
लागू नहीं अगर इस एलिमेंट को छोड़ दिया जाता है, तो नीति के |
---|---|
मौजूदगी | ज़रूरी नहीं |
Type | String |
<AccessToken> एलिमेंट
<AccessToken>request.header.access_token</AccessToken>
डिफ़ॉल्ट रूप से, VerifyAccessToken के लिए यह ज़रूरी है कि Authorization
हेडर में ऐक्सेस टोकन भेजा जाए.
इस एलिमेंट का इस्तेमाल करके, डिफ़ॉल्ट सेटिंग को बदला जा सकता है. उदाहरण
के लिए, request.queryparam.access_token
बताता है कि ऐक्सेस टोकन
को access_token
नाम के क्वेरी पैरामीटर के तौर पर मौजूद होना चाहिए.
<AccessToken>request.header.access_token</AccessToken>
के बारे में बताया गया है:
curl https://myorg-myenv.apigee.net/oauth2/validate -H "access_token:Rft3dqrs56Blirls56a"उदाहरण, जहां
<AccessToken>request.queryparam.access_token</AccessToken>
दिया गया है:
curl "https://myorg-myenv.apigee.net/oauth2/validate?access_token:Rft3dqrs56Blirls56a"
डिफ़ॉल्ट: |
लागू नहीं |
मौजूदगी: |
ज़रूरी नहीं |
टाइप: | स्ट्रिंग |
ऑपरेशनों के साथ इस्तेमाल किया जाता है: |
|
<AccessTokenPrefix> एलिमेंट
<AccessTokenPrefix>Bearer</AccessTokenPrefix>
डिफ़ॉल्ट रूप से,VerifyAccessToken के लिए यह ज़रूरी है कि ऐक्सेस टोकन, ऑथराइज़ेशन हेडर में एक बेयरर टोकन के तौर पर भेजा जाए. उदाहरण के लिए:
-H "Authorization: Bearer Rft3dqrs56Blirls56a"
फ़िलहाल, Bearer ही एक ऐसा प्रीफ़िक्स है जिसका इस्तेमाल किया जा सकता है.
डिफ़ॉल्ट: |
धारक |
मौजूदगी: |
ज़रूरी नहीं |
टाइप: | स्ट्रिंग |
मान्य वैल्यू: |
धारक |
ऑपरेशनों के साथ इस्तेमाल किया जाता है: |
|
<AppEndUser> एलिमेंट
<AppEndUser>request.queryparam.app_enduser</AppEndUser>
ऐसे मामलों में जहां ऐप्लिकेशन के एंड यूज़र आईडी को अनुमति देने वाले सर्वर पर भेजना ज़रूरी है, वहां इस एलिमेंट से आपको यह तय करने की सुविधा मिलती है कि Edge को असली यूज़र आईडी की ज़रूरत कहां होनी चाहिए. उदाहरण के लिए, इसे क्वेरी पैरामीटर या एचटीटीपी हेडर के तौर पर भेजा जा सकता है.
उदाहरण के लिए, request.queryparam.app_enduser
बताता है कि
AppEndUser, क्वेरी पैरामीटर के तौर पर मौजूद होना चाहिए, जैसे कि
?app_enduser=ntesla@theramin.com
. उदाहरण के लिए, एचटीटीपी हेडर में AppEndUser को शामिल करने के लिए, इस वैल्यू को request.header.app_enduser
पर सेट करें.
इस सेटिंग को उपलब्ध कराने पर, आपको ऐक्सेस टोकन में ऐप्लिकेशन का असली यूज़र आईडी शामिल करने का विकल्प मिलता है. अगर आपको असली यूज़र आईडी की मदद से OAuth 2.0 ऐक्सेस टोकन को वापस पाना है या उसे रद्द करना है, तो यह सुविधा काम की है. ज़्यादा जानकारी के लिए, असली यूज़र आईडी, ऐप्लिकेशन आईडी या दोनों के हिसाब से OAuth 2.0 ऐक्सेस टोकन को वापस पाने और रद्द करने की सुविधा चालू करना देखें.
डिफ़ॉल्ट: |
लागू नहीं |
मौजूदगी: |
ज़रूरी नहीं |
टाइप: | स्ट्रिंग |
मान्य वैल्यू: |
ऐसा कोई भी फ़्लो वैरिएबल जिसे रनटाइम के दौरान नीति से ऐक्सेस किया जा सकता है. |
अनुदान टाइप के साथ इस्तेमाल किया जाता है: |
|
<एट्रिब्यूट/एट्रिब्यूट>
<Attributes> <Attribute name="attr_name1" ref="flow.variable" display="true|false">value1</Attribute> <Attribute name="attr_name2" ref="flow.variable" display="true|false">value2</Attribute> </Attributes>
किसी ऐक्सेस टोकन या ऑथराइज़ेशन कोड में कस्टम एट्रिब्यूट जोड़ने के लिए, इस एलिमेंट का इस्तेमाल करें. उदाहरण के लिए, हो सकता है कि आप ऐसे ऐक्सेस टोकन में यूज़र आईडी या सेशन आइडेंटिफ़ायर जोड़ना चाहें जिसे रनटाइम के दौरान देखा और एक्सट्रैक्ट किया जा सके.
इस एलिमेंट की मदद से, किसी फ़्लो वैरिएबल या लिटरल स्ट्रिंग में कोई वैल्यू तय की जा सकती है. अगर आपने वैरिएबल और स्ट्रिंग, दोनों को तय किया है, तो फ़्लो वैरिएबल में तय की गई वैल्यू का इस्तेमाल किया जाएगा. अगर वैरिएबल को हल नहीं किया जा सकता, तो स्ट्रिंग को डिफ़ॉल्ट माना जाता है.
इस एलिमेंट का इस्तेमाल करने के बारे में ज़्यादा जानकारी के लिए, टोकन और ऑथराइज़ेशन कोड को पसंद के मुताबिक बनाना लेख पढ़ें.
जवाब में कस्टम एट्रिब्यूट दिखाना या छिपाना
याद रखें कि अगर इस नीति के generateResponse एलिमेंट को true पर सेट किया जाता है, तो रिस्पॉन्स में टोकन का पूरा JSON प्रज़ेंटेशन दिखता है. इसमें आपके सेट किए गए कस्टम एट्रिब्यूट भी शामिल होते हैं. कुछ मामलों में, हो सकता है कि आप जवाब के तौर पर अपने कुछ या सभी कस्टम एट्रिब्यूट छिपाना चाहें, ताकि वे क्लाइंट ऐप्लिकेशन को न दिखें.
डिफ़ॉल्ट रूप से, जवाब में कस्टम एट्रिब्यूट दिखते हैं. अगर आपको उन्हें छिपाना है, तो display पैरामीटर को false पर सेट करें. उदाहरण के लिए:
<Attributes> <Attribute name="employee_id" ref="employee.id" display="false"/> <Attribute name="employee_name" ref="employee.name" display="false"/> </Attributes>
display
एट्रिब्यूट की वैल्यू
बनी नहीं है. मान लें कि आपने कस्टम एट्रिब्यूट वाला ऐक्सेस टोकन जनरेट किया है, जिसे आपको जनरेट किए गए रिस्पॉन्स में छिपाना है. display=false
को सेट करने से वह लक्ष्य पूरा हो जाता है. हालांकि, अगर बाद में रीफ़्रेश टोकन का इस्तेमाल करके
नया ऐक्सेस टोकन जनरेट किया जाता है, तो ऐक्सेस टोकन के ओरिजनल
कस्टम एट्रिब्यूट, रीफ़्रेश टोकन के रिस्पॉन्स में दिखेंगे. ऐसा इसलिए होता है, क्योंकि Edge को यह याद नहीं होता कि
ऐक्सेस टोकन जनरेट करने की नीति में, display
एट्रिब्यूट को मूल रूप से false
पर सेट किया गया था. कस्टम एट्रिब्यूट, ऐक्सेस टोकन के मेटाडेटा का हिस्सा होता है.
ऑथराइज़ेशन कोड में कस्टम एट्रिब्यूट जोड़ने पर, आपको ऐसा ही दिखेगा. जब उस कोड का इस्तेमाल करके ऐक्सेस टोकन जनरेट किया जाता है, तब वे कस्टम एट्रिब्यूट ऐक्सेस टोकन के रिस्पॉन्स में दिखेंगे. ध्यान दें, हो सकता है कि यह आपकी इच्छा के मुताबिक न हो.
ऐसे मामलों में कस्टम एट्रिब्यूट को छिपाने के लिए, आपके पास ये विकल्प होते हैं:
- रीफ़्रेश टोकन नीति में, कस्टम एट्रिब्यूट को साफ़ तौर पर रीसेट करें और उनके डिसप्ले को 'गलत' पर सेट करें. इस मामले में, हो सकता है कि आपको getOAuthV2Info नीति का इस्तेमाल करके, ओरिजनल ऐक्सेस टोकन से ओरिजनल कस्टम वैल्यू को फिर से हासिल करना पड़े.
- जिन कस्टम एट्रिब्यूट को जवाब में नहीं देखना है उन्हें मैन्युअल तरीके से एक्सट्रैक्ट करने के लिए, पोस्टप्रोसेसिंग JavaScript की नीति का इस्तेमाल करें.
टोकन और ऑथराइज़ेशन कोड को पसंद के मुताबिक बनाना भी देखें.
डिफ़ॉल्ट: |
|
मौजूदगी: |
ज़रूरी नहीं |
मान्य वैल्यू: |
|
अनुदान टाइप के साथ इस्तेमाल किया जाता है: |
|
<ClientId> एलिमेंट
<ClientId>request.formparam.client_id</ClientId>
कई मामलों में, क्लाइंट ऐप्लिकेशन को ऑथराइज़ेशन सर्वर पर क्लाइंट आईडी भेजना होगा. इस
एलिमेंट से यह तय किया जा सकता है कि Client-ID को कहां EDGE देखें. आपके पास सिर्फ़ डिफ़ॉल्ट जगह
के लिए, फ़्लो वैरिएबल request.formparam.client_id
को सेट करने का विकल्प होता है. ClientId
को किसी दूसरे वैरिएबल पर सेट नहीं किया जा सकता.
ऐक्सेस टोकन और ऑथराइज़ेशन कोड का अनुरोध करना भी देखें.
डिफ़ॉल्ट: |
request.formparam.client_id (एक x-www-form-urlencoded और अनुरोध के मुख्य भाग में मौजूद) |
मौजूदगी: |
ज़रूरी नहीं |
टाइप: | स्ट्रिंग |
मान्य वैल्यू: | फ़्लो वैरिएबल: request.formparam.client_id |
अनुदान टाइप के साथ इस्तेमाल किया जाता है: |
इसका इस्तेमाल, generateऑथराइज़ेशनकोड कार्रवाई के साथ किया जा सकता है. |
<Code> एलिमेंट
<Code>request.queryparam.code</Code>
ऑथराइज़ेशन अनुदान टाइप फ़्लो में, क्लाइंट को ऑथराइज़ेशन सर्वर (Apigee Edge) पर ऑथराइज़ेशन कोड सबमिट करना होगा. इस एलिमेंट से यह तय किया जा सकता है कि Edge को ऑथराइज़ेशन कोड कहां खोजना चाहिए. उदाहरण के लिए, इसे क्वेरी पैरामीटर, एचटीटीपी हेडर या फ़ॉर्म पैरामीटर (डिफ़ॉल्ट) के तौर पर भेजा जा सकता है.
वैरिएबल, request.queryparam.auth_code
से पता चलता है कि
ऑथराइज़ेशन कोड, क्वेरी पैरामीटर के तौर पर मौजूद होना चाहिए, जैसे कि
?auth_code=AfGlvs9
. उदाहरण के लिए, एचटीटीपी हेडर में ऑथराइज़ेशन कोड को ज़रूरी बनाने के लिए, इस वैल्यू को request.header.auth_code
पर सेट करें. ऐक्सेस टोकन और
ऑथराइज़ेशन कोड का अनुरोध करना
भी देखें.
डिफ़ॉल्ट: |
request.formparam.code (एक x-www-form-urlencoded और अनुरोध के मुख्य भाग में मौजूद) |
मौजूदगी: |
ज़रूरी नहीं |
टाइप: | स्ट्रिंग |
मान्य वैल्यू: | ऐसा कोई भी फ़्लो वैरिएबल जिसे रनटाइम के दौरान, नीति को ऐक्सेस किया जा सकता है |
अनुदान टाइप के साथ इस्तेमाल किया जाता है: | authorization_code |
<ExpiresIn> एलिमेंट
<ExpiresIn>10000</ExpiresIn>
यह नीति, ऐक्सेस टोकन और ऑथराइज़ेशन कोड की समयसीमा को मिलीसेकंड में लागू करती है. (रीफ़्रेश टोकन के लिए,
<RefreshTokenExpiresIn>
का इस्तेमाल करें.) समयसीमा खत्म होने के समय की वैल्यू,
सिस्टम से जनरेट की गई वैल्यू और <ExpiresIn>
वैल्यू है. अगर
<ExpiresIn>
को -1 पर सेट किया गया है, तो OAuth ऐक्सेस टोकन की समयसीमा खत्म होने की तारीख के हिसाब से, टोकन या कोड की समयसीमा खत्म हो जाती है.
अगर <ExpiresIn>
तय नहीं किया गया है, तो सिस्टम,
सिस्टम लेवल पर कॉन्फ़िगर की गई डिफ़ॉल्ट वैल्यू लागू करता है.
इसके खत्म होने के समय को रनटाइम पर, हार्ड कोड की गई डिफ़ॉल्ट वैल्यू का इस्तेमाल करके या फ़्लो वैरिएबल का इस्तेमाल करके भी सेट किया जा सकता है. उदाहरण के लिए, टोकन की समयसीमा खत्म होने की वैल्यू को की-वैल्यू मैप में स्टोर किया जा सकता है.
साथ ही, इसे वापस पाया जा सकता है, इसे किसी वैरिएबल को असाइन किया जा सकता है, और नीति में इसका रेफ़रंस दिया जा सकता है. उदाहरण के लिए,
kvm.oauth.expires_in
.
Apigee Edge for Public Cloud की मदद से, इकाइयों के ऐक्सेस होने के बाद, Edge नीचे दी गई इकाइयों को कम से कम 180 सेकंड तक कैश मेमोरी में रखता है.
- OAuth ऐक्सेस टोकन. इसका मतलब है कि रद्द किया गया टोकन, कैश मेमोरी की समयसीमा खत्म होने तक तीन मिनट तक काम कर सकता है.
- कुंजी मैनेज करने वाली सेवा (केएमएस) की इकाइयां (ऐप्लिकेशन, डेवलपर, एपीआई प्रॉडक्ट).
- OAuth टोकन और केएमएस इकाइयों पर कस्टम एट्रिब्यूट.
यहां दिया गया पद, एक फ़्लो वैरिएबल और डिफ़ॉल्ट वैल्यू के बारे में भी बताता है. ध्यान दें कि फ़्लो वैरिएबल की वैल्यू को, तय की गई डिफ़ॉल्ट वैल्यू से ज़्यादा प्राथमिकता दी जाती है.
<ExpiresIn ref="kvm.oauth.expires_in"> 3600000 <!--default value in milliseconds--> </ExpiresIn>
Edge में, टोकन बनाने के बाद उसे ज़बरदस्ती खत्म करने की सुविधा नहीं है. अगर आपको किसी शर्त के आधार पर टोकन की समयसीमा खत्म करनी है, तो इस समस्या को ठीक करने के तरीके के बारे में Apigee की इस कम्यूनिटी पोस्ट में बताया गया है.
डिफ़ॉल्ट रूप से, समयसीमा खत्म हो चुके ऐक्सेस टोकन, समयसीमा खत्म होने के तीन दिन बाद अपने-आप Apigee Edge सिस्टम से पूरी तरह मिट जाते हैं. ऐक्सेस टोकन को माइग्रेट करना भी देखें
प्राइवेट क्लाउड: प्राइवेट क्लाउड को इंस्टॉल करने के लिए, किसी Edge के लिए, डिफ़ॉल्ट
वैल्यू को conf_keymanagement_oauth_auth_code_expiry_time_in_millis
प्रॉपर्टी सेट करता है.
इस प्रॉपर्टी को सेट करने के लिए:
message-processor.properties
फ़ाइल को किसी एडिटर में खोलें. अगर फ़ाइल मौजूद नहीं है, तो इसे बनाएं:vi /opt/apigee/customer/application/message-processor.properties
- प्रॉपर्टी को अपने हिसाब से सेट करें:
conf_keymanagement_oauth_auth_code_expiry_time_in_millis=3600000
- पक्का करें कि प्रॉपर्टी फ़ाइल का मालिकाना हक, "apigee" उपयोगकर्ता के पास हो:
chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- मैसेज प्रोसेसर को रीस्टार्ट करें.
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
डिफ़ॉल्ट: |
अगर इसके लिए कोई वैल्यू तय नहीं की गई है, तो सिस्टम, सिस्टम लेवल पर कॉन्फ़िगर की गई डिफ़ॉल्ट वैल्यू लागू करता है. |
मौजूदगी: |
ज़रूरी नहीं |
टाइप: | पूर्णांक |
मान्य वैल्यू: |
|
अनुदान टाइप के साथ इस्तेमाल किया जाता है: |
इसका इस्तेमाल जनरेट करने वाले कोड की कार्रवाई के साथ भी किया जाता है. |
<ExternalAccessToken> एलिमेंट
<ExternalAccessToken>request.queryparam.external_access_token</ExternalAccessToken>
यह Apigee Edge को बताता है कि एक्सटर्नल ऐक्सेस टोकन कहां मिलेगा. यह एक ऐक्सेस टोकन होता है, जिसे Apigee Edge से जनरेट नहीं किया जाता.
वैरिएबल request.queryparam.external_access_token
से पता चलता है कि बाहरी ऐक्सेस टोकन, क्वेरी पैरामीटर के तौर पर मौजूद होना चाहिए, जैसे कि ?external_access_token=12345678
. उदाहरण के लिए, किसी एचटीटीपी हेडर में बाहरी ऐक्सेस टोकन को ज़रूरी बनाने के लिए, इस वैल्यू को request.header.external_access_token
पर सेट करें. तीसरे पक्ष के OAuth टोकन का इस्तेमाल करना भी देखें.
<बाहरी ऑथराइज़ेशन> एलिमेंट
<ExternalAuthorization>true</ExternalAuthorization>
अगर यह एलिमेंट 'गलत है' पर सेट है या मौजूद नहीं है, तो Edge, आम तौर पर Apigee Edge के ऑथराइज़ेशन स्टोर की मदद से, client_id और client_secret की पुष्टि करता है. इस एलिमेंट का इस्तेमाल तब करें, जब आपको तीसरे पक्ष के OAuth टोकन के साथ काम करना हो. इस एलिमेंट का इस्तेमाल करने के बारे में जानकारी पाने के लिए, तीसरे पक्ष के OAuth टोकन इस्तेमाल करना लेख पढ़ें.
डिफ़ॉल्ट: |
false |
मौजूदगी: |
ज़रूरी नहीं |
टाइप: | बूलियन |
मान्य वैल्यू: | सही या गलत |
अनुदान टाइप के साथ इस्तेमाल किया जाता है: |
|
<ExternalauthorizationCode> एलिमेंट
<ExternalAuthorizationCode>request.queryparam.external_auth_code</ExternalAuthorizationCode>
यह Apigee Edge को बताता है कि बाहरी पुष्टि करने का कोड कहां मिलेगा (Apigee Edge से जनरेट नहीं हुआ पुष्टि करने वाला कोड).
वैरिएबल request.queryparam.external_auth_code
बताता है कि बाहरी ऑथराइज़ेशन कोड, क्वेरी पैरामीटर के तौर पर मौजूद होना चाहिए, जैसे कि ?external_auth_code=12345678
. उदाहरण के लिए, किसी एचटीटीपी हेडर में बाहरी ऑथराइज़ेशन कोड को
ज़रूरी करने के लिए, इस वैल्यू को
request.header.external_auth_code
पर सेट करें. तीसरे पक्ष के OAuth टोकन का इस्तेमाल करना भी देखें.
<ExternalRefreshToken> एलिमेंट
<ExternalRefreshToken>request.queryparam.external_refresh_token</ExternalRefreshToken>
Apigee Edge को बताता है कि एक्सटर्नल रीफ़्रेश टोकन कहां मिलेगा (यह एक रीफ़्रेश टोकन होता है, जो Apigee Edge से जनरेट नहीं होता).
वैरिएबल request.queryparam.external_refresh_token
से पता चलता है कि बाहरी रीफ़्रेश टोकन, क्वेरी पैरामीटर के तौर पर मौजूद होना चाहिए, जैसे कि ?external_refresh_token=12345678
. उदाहरण के लिए, किसी एचटीटीपी हेडर में बाहरी रीफ़्रेश टोकन
को ज़रूरी करने के लिए, इस वैल्यू को
request.header.external_refresh_token
पर सेट करें. तीसरे पक्ष के OAuth टोकन का इस्तेमाल करना भी देखें.
<GenerateResponse> एलिमेंट
<GenerateResponse enabled='true'/>
अगर इस नीति को true
पर सेट किया जाता है, तो यह नीति जनरेट करती है और जवाब देती है. उदाहरण के लिए, generateAccessToken के लिए, इस तरह का रिस्पॉन्स हो सकता है:
{ "issued_at" : "1467841035013", "scope" : "read", "application_name" : "e31b8d06-d538-4f6b-9fe3-8796c11dc930", "refresh_token_issued_at" : "1467841035013", "status" : "approved", "refresh_token_status" : "approved", "api_product_list" : "[Product1, nhl_product]", "expires_in" : "1799", "developer.email" : "edward@slalom.org", "token_type" : "BearerToken", "refresh_token" : "rVSmm3QaNa0xBVFbUISz1NZI15akvgLJ", "client_id" : "Adfsdvoc7KX5Gezz9le745UEql5dDmj", "access_token" : "AnoHsh2oZ6EFWF4h0KrA0gC5og3a", "organization_name" : "cerruti", "refresh_token_expires_in" : "0", "refresh_count" : "0" }
false
होने पर, कोई जवाब नहीं भेजा जाता. इसके बजाय, फ़्लो वैरिएबल का एक सेट,
नीति के फ़ंक्शन से जुड़ी वैल्यू से अपने-आप भर जाता है. उदाहरण के लिए, oauthv2authcode.OAuthV2-GenerateAuthorizationCode.code
नाम का फ़्लो वैरिएबल, नए मिंट किए गए ऑथराइज़ेशन कोड से भर जाता है. ध्यान दें कि expires_in को जवाब में सेकंड में
दिखाया जाता है.
डिफ़ॉल्ट: |
false |
मौजूदगी: |
ज़रूरी नहीं |
टाइप: | स्ट्रिंग |
मान्य वैल्यू: | सही या गलत |
अनुदान टाइप के साथ इस्तेमाल किया जाता है: |
|
<GenerateErrorResponse> एलिमेंट
<GenerateErrorResponse enabled='true'/>
अगर इस नीति को true
पर सेट किया जाता है, तो यह नीति जनरेट करती है और जवाब देती है. ऐसा तब होता है, जब
ContinueOnError एट्रिब्यूट को 'सही' पर सेट किया जाता है. अगर false
(डिफ़ॉल्ट) है, तो कोई
जवाब नहीं भेजा जाएगा. इसके बजाय, फ़्लो वैरिएबल के एक सेट में,
नीति के फ़ंक्शन से जुड़ी वैल्यू की जानकारी अपने-आप भर जाती है.
डिफ़ॉल्ट: |
false |
मौजूदगी: |
ज़रूरी नहीं |
टाइप: | स्ट्रिंग |
मान्य वैल्यू: | सही या गलत |
अनुदान टाइप के साथ इस्तेमाल किया जाता है: |
|
<GrantType>
<GrantType>request.queryparam.grant_type</GrantType>
इससे नीति को यह पता चलता है कि अनुरोध में पास किया गया, अनुदान टाइप वाला पैरामीटर कहां मिलेगा. OAuth 2.0 के निर्देशों के मुताबिक, ऐक्सेस टोकन और ऑथराइज़ेशन कोड के अनुरोध के साथ, ऐक्सेस का टाइप दिया जाना चाहिए. वैरिएबल कोई हेडर, क्वेरी पैरामीटर या फ़ॉर्म पैरामीटर (डिफ़ॉल्ट) हो सकता है.
उदाहरण के लिए, request.queryparam.grant_type
बताता है कि पासवर्ड, क्वेरी पैरामीटर के तौर पर मौजूद होना चाहिए, जैसे कि ?grant_type=password
.
उदाहरण के लिए, एचटीटीपी हेडर में अनुदान के टाइप को ज़रूरी बनाने के लिए, इस वैल्यू को
request.header.grant_type
पर सेट करें. ऐक्सेस टोकन और ऑथराइज़ेशन कोड का अनुरोध करना भी देखें.
डिफ़ॉल्ट: |
request.formparam.grant_type (एक x-www-form-urlencoded और अनुरोध के मुख्य भाग में बताया गया है) |
मौजूदगी: |
ज़रूरी नहीं |
टाइप: | स्ट्रिंग |
मान्य वैल्यू: | जैसा कि ऊपर बताया गया है, वैरिएबल. |
अनुदान टाइप के साथ इस्तेमाल किया जाता है: |
|
<ऑपरेशन> एलिमेंट
<Operation>GenerateAuthorizationCode</Operation>
OAuth 2.0 कार्रवाई, जो नीति लागू करती है.
डिफ़ॉल्ट: |
अगर |
मौजूदगी: |
ज़रूरी नहीं |
टाइप: | स्ट्रिंग |
मान्य वैल्यू: |
|
<PassWord> एलिमेंट
<PassWord>request.queryparam.password</PassWord>
इस एलिमेंट का इस्तेमाल सिर्फ़ पासवर्ड देने की अनुमति के प्रकार के साथ किया जाता है. पासवर्ड
दिए जाने के टाइप के साथ, उपयोगकर्ता के क्रेडेंशियल (पासवर्ड और उपयोगकर्ता नाम) OAuthV2 नीति
के लिए उपलब्ध कराए जाने चाहिए. <PassWord>
और <UserName>
एलिमेंट का इस्तेमाल,
वैरिएबल तय करने के लिए किया जाता है, जहां Edge इन वैल्यू को ढूंढ सकता है. अगर ये एलिमेंट तय नहीं किए गए हैं, तो
नीति के हिसाब से username
और password
नाम के फ़ॉर्म पैरामीटर में वैल्यू (डिफ़ॉल्ट रूप से) मिलनी चाहिए. वैल्यू न मिलने पर, नीति में गड़बड़ी की जानकारी मिलती है. आपके पास
<PassWord>
और <UserName>
एलिमेंट का इस्तेमाल करके,
क्रेडेंशियल वाले किसी भी फ़्लो वैरिएबल का रेफ़रंस देने का विकल्प है.
उदाहरण के लिए, क्वेरी पैरामीटर का इस्तेमाल करके, पासवर्ड को टोकन के अनुरोध में भेजा जा सकता है और
एलिमेंट को इस तरह से सेट किया जा सकता है:
<PassWord>request.queryparam.password</PassWord>
.
एचटीटीपी हेडर में पासवर्ड ज़रूरी करने के लिए, इस वैल्यू को
request.header.password
पर सेट करें.
OAuthV2 नीति, क्रेडेंशियल की इन वैल्यू के साथ और कुछ नहीं करती. Edge सिर्फ़ इन क्रेडेंशियल वैल्यू के मौजूद होने की पुष्टि करता है. यह एपीआई डेवलपर पर निर्भर करता है कि वह वैल्यू के अनुरोध को फिर से हासिल करे और टोकन जनरेट करने की नीति के लागू होने से पहले, उसे किसी आइडेंटिटी प्रोवाइडर को भेजें.
ऐक्सेस टोकन और ऑथराइज़ेशन कोड का अनुरोध करना भी देखें.
डिफ़ॉल्ट: |
request.formparam.password (एक x-www-form-urlencoded और अनुरोध के मुख्य भाग में दर्ज किया गया है) |
मौजूदगी: |
ज़रूरी नहीं |
टाइप: | स्ट्रिंग |
मान्य वैल्यू: | रनटाइम के दौरान, नीति के लिए उपलब्ध कोई भी फ़्लो वैरिएबल. |
अनुदान टाइप के साथ इस्तेमाल किया जाता है: | पासवर्ड |
<redirectUri> एलिमेंट
<RedirectUri>request.queryparam.redirect_uri</RedirectUri>
यह बताता है कि Edge को अनुरोध में redirect_uri
पैरामीटर को कहां खोजना चाहिए.
रीडायरेक्ट यूआरआई के बारे में जानकारी
रीडायरेक्शन यूआरआई का इस्तेमाल ऑथराइज़ेशन कोड और इंप्लिसिट अनुदान टाइप के साथ किया जाता है. रीडायरेक्ट यूआरआई से ऑथराइज़ेशन सर्वर (Edge) को यह पता चलता है कि ऑथराइज़ेशन कोड को कहां भेजना है (ऑथराइज़ेशन कोड के अनुदान टाइप के लिए) या ऐक्सेस टोकन (इंप्लिसिट ग्रांट टाइप के लिए). यह समझना बहुत ज़रूरी है कि इस पैरामीटर की ज़रूरत कब पड़ती है, यह कब ज़रूरी नहीं होता, और इसका इस्तेमाल कैसे किया जाता है:
-
(ज़रूरी है) अगर कोई कॉलबैक यूआरएल, डेवलपर ऐप्लिकेशन पर रजिस्टर किया गया है और वह अनुरोध के क्लाइंट कुंजियों से जुड़ा है और अगर अनुरोध में
redirect_uri
मौजूद है, तो दोनों का यूआरएल पूरी तरह से मेल खाना चाहिए. अगर वे आपस में मेल नहीं खाते, तो गड़बड़ी का मैसेज दिखता है. Edge पर डेवलपर ऐप्लिकेशन रजिस्टर करने और कॉलबैक यूआरएल की जानकारी के लिए, ऐप्लिकेशन रजिस्टर करें और एपीआई कुंजियां मैनेज करें देखें. - (ज़रूरी नहीं) अगर कॉलबैक यूआरएल रजिस्टर है और अनुरोध में
redirect_uri
मौजूद नहीं है, तो Edge रजिस्टर किए गए कॉलबैक यूआरएल पर रीडायरेक्ट हो जाता है. - (ज़रूरी है) अगर कॉलबैक यूआरएल रजिस्टर नहीं है, तो
redirect_uri
ज़रूरी है. ध्यान दें कि इस मामले में, Edge किसी भी यूआरएल को स्वीकार करेगा. इस मामले में सुरक्षा से जुड़ी समस्या हो सकती है. इसलिए,इसका इस्तेमाल सिर्फ़ भरोसेमंद क्लाइंट ऐप्लिकेशन के साथ किया जाना चाहिए. अगर क्लाइंट ऐप्लिकेशन भरोसेमंद नहीं हैं, तो सबसे सही तरीका यह है कि हमेशा कॉलबैक यूआरएल के रजिस्ट्रेशन को ज़रूरी बनाएं.
इस पैरामीटर को क्वेरी पैरामीटर या हेडर में भेजा जा सकता है. request.queryparam.redirect_uri
वैरिएबल से यह पता चलता है कि रीडायरेक्टUri, क्वेरी पैरामीटर के तौर पर मौजूद होना चाहिए, जैसे कि ?redirect_uri=login.myapp.com
. उदाहरण के लिए, एचटीटीपी हेडर में रीडायरेक्शनUri को ज़रूरी बनाने के लिए, इस वैल्यू को request.header.redirect_uri
पर सेट करें. ऐक्सेस टोकन और
ऑथराइज़ेशन कोड का अनुरोध करना
भी देखें.
डिफ़ॉल्ट: |
request.formparam.redirect_uri (एक x-www-form-urlencoded और अनुरोध के मुख्य भाग में मौजूद) |
मौजूदगी: |
ज़रूरी नहीं |
टाइप: | स्ट्रिंग |
मान्य वैल्यू: | ऐसा कोई भी फ़्लो वैरिएबल जिसे नीति में रनटाइम के दौरान ऐक्सेस किया जा सकता है |
अनुदान टाइप के साथ इस्तेमाल किया जाता है: |
इसका इस्तेमाल जनरेट करने वाला ऑथराइज़ेशन कोड ऑपरेशन के साथ भी किया जाता है. |
<RefreshToken> एलिमेंट
<RefreshToken>request.queryparam.refreshtoken</RefreshToken>
रीफ़्रेश टोकन की मदद से ऐक्सेस टोकन का अनुरोध करने पर, आपको अनुरोध में रीफ़्रेश टोकन देना होगा. इस एलिमेंट से यह तय किया जा सकता है कि EDGE में रीफ़्रेश टोकन कहां दिखना चाहिए. उदाहरण के लिए, इसे क्वेरी पैरामीटर, एचटीटीपी हेडर या फ़ॉर्म पैरामीटर (डिफ़ॉल्ट) के तौर पर भेजा जा सकता है.
वैरिएबल request.queryparam.refreshtoken
से पता चलता है कि रीफ़्रेश टोकन, क्वेरी पैरामीटर के तौर पर मौजूद होना चाहिए, जैसे कि ?refresh_token=login.myapp.com
. उदाहरण के लिए, एचटीटीपी हेडर में रीफ़्रेश टोकन की ज़रूरत के लिए, इस वैल्यू को request.header.refresh_token
पर सेट करें. ऐक्सेस टोकन और
ऑथराइज़ेशन कोड का अनुरोध करना
भी देखें.
डिफ़ॉल्ट: |
request.formparam.refresh_token (एक x-www-form-urlencoded और अनुरोध के मुख्य भाग में मौजूद) |
मौजूदगी: |
ज़रूरी नहीं |
टाइप: | स्ट्रिंग |
मान्य वैल्यू: | ऐसा कोई भी फ़्लो वैरिएबल जिसे नीति में रनटाइम के दौरान ऐक्सेस किया जा सकता है |
अनुदान टाइप के साथ इस्तेमाल किया जाता है: |
|
<रीफ़्रेशTokenExpiresIn> एलिमेंट
<RefreshTokenExpiresIn>1000</RefreshTokenExpiresIn>
रीफ़्रेश टोकन की समयसीमा खत्म होने का समय मिलीसेकंड में लागू करता है. समयसीमा खत्म होने की वैल्यू, सिस्टम से जनरेट की गई वैल्यू और <RefreshTokenExpiresIn>
वैल्यू होती है. अगर
<RefreshTokenExpiresIn>
को -1 पर सेट किया गया है, तो रीफ़्रेश टोकन की समयसीमा OAuth रीफ़्रेश टोकन की समयसीमा के मुताबिक खत्म हो जाएगी. अगर <RefreshTokenExpiresIn>
के बारे में नहीं बताया गया है,
तो डिफ़ॉल्ट रूप से, ऐक्सेस की समयसीमा खत्म होने की कोई अवधि नहीं होती.
इसके खत्म होने के समय को रनटाइम पर, हार्ड कोड की गई डिफ़ॉल्ट वैल्यू का इस्तेमाल करके या फ़्लो वैरिएबल का इस्तेमाल करके भी सेट किया जा सकता है. उदाहरण के लिए, टोकन की समयसीमा खत्म होने की वैल्यू को की-वैल्यू मैप में स्टोर किया जा सकता है.
साथ ही, इसे वापस पाया जा सकता है, इसे किसी वैरिएबल को असाइन किया जा सकता है, और नीति में इसका रेफ़रंस दिया जा सकता है. उदाहरण
के लिए, kvm.oauth.expires_in
.
यहां दिया गया पद, एक फ़्लो वैरिएबल और डिफ़ॉल्ट वैल्यू के बारे में भी बताता है. ध्यान दें कि फ़्लो वैरिएबल की वैल्यू को, तय की गई डिफ़ॉल्ट वैल्यू से ज़्यादा प्राथमिकता दी जाती है.
<RefreshTokenExpiresIn ref="kvm.oauth.expires_in"> 3600000 <!--default value in milliseconds--> </RefreshTokenExpiresIn>
प्राइवेट क्लाउड: प्राइवेट क्लाउड को इंस्टॉल करने के लिए, किसी Edge के लिए, डिफ़ॉल्ट
वैल्यू को conf_keymanagement_oauth_refresh_token_expiry_time_in_millis
प्रॉपर्टी सेट करता है.
इस प्रॉपर्टी को सेट करने के लिए:
message-processor.properties
फ़ाइल को किसी एडिटर में खोलें. अगर फ़ाइल मौजूद नहीं है, तो इसे बनाएं:vi /opt/apigee/customer/application/message-processor.properties
- प्रॉपर्टी को अपने हिसाब से सेट करें:
conf_keymanagement_oauth_refresh_token_expiry_time_in_millis=3600000
- पक्का करें कि प्रॉपर्टी फ़ाइल का मालिकाना हक, "apigee" उपयोगकर्ता के पास हो:
chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- मैसेज प्रोसेसर को रीस्टार्ट करें.
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
डिफ़ॉल्ट: |
अगर इसके लिए कोई वैल्यू तय नहीं की गई है, तो सिस्टम, सिस्टम लेवल पर कॉन्फ़िगर की गई डिफ़ॉल्ट वैल्यू लागू करता है. |
मौजूदगी: |
ज़रूरी नहीं |
टाइप: | पूर्णांक |
मान्य वैल्यू: |
|
अनुदान टाइप के साथ इस्तेमाल किया जाता है: |
|
"refresh_token_expires_in" : "0"
.<ResponseType> एलिमेंट
<ResponseType>request.queryparam.response_type</ResponseType>
यह एलिमेंट Edge को बताता है कि क्लाइंट ऐप्लिकेशन को किस तरह के अनुदान का अनुरोध करना है. इसका इस्तेमाल सिर्फ़ ऑथराइज़ेशन कोड और इंप्लिसिट ग्रांट टाइप फ़्लो के साथ किया जाता है.
डिफ़ॉल्ट रूप से, Edge response_type
क्वेरी
पैरामीटर में रिस्पॉन्स टाइप वैल्यू खोजता है. अगर आपको इस डिफ़ॉल्ट व्यवहार को बदलना है, तो <ResponseType> एलिमेंट का इस्तेमाल करें, ताकि
रिस्पॉन्स टाइप वैल्यू वाले फ़्लो वैरिएबल को कॉन्फ़िगर किया जा सके. उदाहरण के लिए, अगर इस एलिमेंट को request.header.response_type
पर सेट किया जाता है, तो Edge अनुरोध के हेडर में पास करने के लिए रिस्पॉन्स टाइप खोजता है. ऐक्सेस टोकन और ऑथराइज़ेशन कोड का अनुरोध करना भी देखें.
डिफ़ॉल्ट: |
request.formparam.response_type (एक x-www-form-urlencoded और अनुरोध के मुख्य भाग में बताया गया है) |
मौजूदगी: |
ज़रूरी नहीं. अगर आपको डिफ़ॉल्ट व्यवहार को बदलना है, तो इस एलिमेंट का इस्तेमाल करें. |
टाइप: | स्ट्रिंग |
मान्य वैल्यू: | code (ऑथराइज़ेशन कोड देने के टाइप के लिए) या token
(इंप्लिसिट ग्रांट टाइप के लिए) |
अनुदान टाइप के साथ इस्तेमाल किया जाता है: |
|
<ReuseRefreshToken> एलिमेंट
<ReuseRefreshToken>true</ReuseRefreshToken>
इस नीति को true
पर सेट करने पर, मौजूदा रीफ़्रेश टोकन का फिर से इस्तेमाल तब तक किया जाता है, जब तक उसकी समयसीमा खत्म नहीं हो जाती. false
होने पर, मान्य रीफ़्रेश टोकन दिखने पर, Apigee Edge से एक नया रीफ़्रेश टोकन जारी किया जाता है.
डिफ़ॉल्ट: |
|
मौजूदगी: |
ज़रूरी नहीं |
टाइप: | boolean |
मान्य वैल्यू: |
|
अनुदान प्रकार के साथ इस्तेमाल किया गया: |
|
<Scope> एलिमेंट
<Scope>request.queryparam.scope</Scope>
अगर यह एलिमेंट, generateAccessToken या generateAuthorizeCode
की नीतियों में से किसी एक में मौजूद है, तो इसका इस्तेमाल यह तय करने के लिए किया जाता है कि टोकन या कोड किस दायरे में देना है. आम तौर पर, ये वैल्यू क्लाइंट ऐप्लिकेशन से किए गए अनुरोध में, नीति को भेजी जाती हैं. आपके पास फ़्लो वैरिएबल लेने के लिए, एलिमेंट को कॉन्फ़िगर करने का विकल्प होता है. इससे आपको यह चुनने का विकल्प मिलता है कि अनुरोध में स्कोप कैसे पास किए जाएं. इस
उदाहरण में, request.queryparam.scope
बताता है कि स्कोप, क्वेरी पैरामीटर के तौर पर मौजूद होना चाहिए, जैसे कि ?scope=READ
. उदाहरण के लिए, किसी एचटीटीपी हेडर में
स्कोप को शामिल करने के लिए, इस वैल्यू को
request.header.scope
पर सेट करें.
अगर यह एलिमेंट "VerifyAccessToken" नीति के दायरे में आता है, तो इसका इस्तेमाल यह तय करने के लिए किया जाता है कि नीति को किस दायरे को लागू करना चाहिए. इस तरह की नीति में, वैल्यू को "हार्ड कोड किया गया" स्कोप नाम होना चाहिए -- वैरिएबल का इस्तेमाल नहीं किया जा सकता. उदाहरण के लिए:
<Scope>A B</Scope>
OAuth2 स्कोप के साथ काम करना और ऐक्सेस टोकन और ऑथराइज़ेशन कोड का अनुरोध करना भी देखें.
डिफ़ॉल्ट: |
कोई दायरा नहीं |
मौजूदगी: |
ज़रूरी नहीं |
टाइप: | स्ट्रिंग |
मान्य वैल्यू: |
अगर जनरेट* नीतियों के साथ इस्तेमाल किया जाता है, तो यह एक फ़्लो वैरिएबल होता है. अगर इसेVerifyAccessToken के साथ इस्तेमाल किया जाता है, तो स्कोप के नामों (स्ट्रिंग) की एक लिस्ट, जिसे स्पेस से अलग किया जाता है. |
अनुदान टाइप के साथ इस्तेमाल किया जाता है: |
|
<State> एलिमेंट
<State>request.queryparam.state</State>
ऐसे मामलों में जहां क्लाइंट ऐप्लिकेशन को अनुमति देने वाले सर्वर पर राज्य की जानकारी भेजनी होती है, इस एलिमेंट से आपको यह तय करने की सुविधा मिलती है कि Edge को राज्य की वैल्यू कहां देखनी चाहिए. उदाहरण के लिए, इसे क्वेरी पैरामीटर या एचटीटीपी हेडर के तौर पर भेजा जा सकता है. आम तौर पर, राज्य की वैल्यू का इस्तेमाल सुरक्षा के उपाय के तौर पर किया जाता है, ताकि सीएसआरएफ़ हमलों को रोका जा सके.
उदाहरण के लिए, request.queryparam.state
से पता चलता है कि स्थिति, क्वेरी पैरामीटर के तौर पर मौजूद होनी चाहिए, जैसे कि ?state=HjoiuKJH32
. उदाहरण के लिए, एचटीटीपी हेडर में स्थिति को ज़रूरी बनाने के लिए, इस वैल्यू को
request.header.state
पर सेट करें. ऐक्सेस टोकन और ऑथराइज़ेशन कोड का अनुरोध करना भी देखें.
डिफ़ॉल्ट: |
कोई राज्य नहीं |
मौजूदगी: |
ज़रूरी नहीं |
टाइप: | स्ट्रिंग |
मान्य वैल्यू: | ऐसा कोई भी फ़्लो वैरिएबल जिसे रनटाइम के दौरान, नीति को ऐक्सेस किया जा सकता है |
अनुदान टाइप के साथ इस्तेमाल किया जाता है: |
|
<StoreToken> एलिमेंट
<StoreToken>true</StoreToken>
<ExternalAuthorization>
एलिमेंट के true
होने पर, इस एलिमेंट को true
पर सेट करें. <StoreToken>
एलिमेंट, Apigee Edge को
बाहरी ऐक्सेस टोकन सेव करने के लिए कहता है. ऐसा न करने पर, यह बदलाव लंबे समय तक नहीं बना रहेगा.
डिफ़ॉल्ट: |
false |
मौजूदगी: |
ज़रूरी नहीं |
टाइप: | बूलियन |
मान्य वैल्यू: | सही या गलत |
अनुदान टाइप के साथ इस्तेमाल किया जाता है: |
|
<supportedGrantTypes>/<GrantType> एलिमेंट
<SupportedGrantTypes> <GrantType>authorization_code</GrantType> <GrantType>client_credentials</GrantType> <GrantType>implicit</GrantType> <GrantType>password</GrantType> </SupportedGrantTypes>
यह नीति Apigee Edge पर OAuth टोकन एंडपॉइंट के साथ काम करने वाले अनुदान टाइप के बारे में बताती है. एंडपॉइंट एक से ज़्यादा तरह के अनुदान
के साथ काम कर सकता है. इसका मतलब है कि एक एंडपॉइंट को कई तरह के अनुदान
के लिए, ऐक्सेस टोकन देने के लिए कॉन्फ़िगर किया जा सकता है. एंडपॉइंट के बारे में ज़्यादा जानने के लिए, OAuth एंडपॉइंट के बारे में जानकारी लेख पढ़ें. अनुमति का टाइप, grant_type
पैरामीटर में टोकन के अनुरोधों में पास किया जाता है.
अगर अनुमति पाने के किसी तरीके के बारे में नहीं बताया गया है, तो सिर्फ़
authorization_code
और implicit
को इस्तेमाल करने की अनुमति है. <GrantType> एलिमेंट भी देखें. इसका इस्तेमाल यह बताने के लिए किया जाता है कि Apigee Edge को क्लाइंट के अनुरोध में भेजे गए grant_type
पैरामीटर को कहां खोजना चाहिए. Edge यह पक्का करेगा कि grant_type
पैरामीटर की वैल्यू, इस्तेमाल किए जा सकने वाले किसी एक तरह के अनुदान से मेल खाती हो.
डिफ़ॉल्ट: |
ऑथराइज़ेशन _code और इंप्लिसिट |
मौजूदगी: |
ज़रूरी है |
टाइप: | स्ट्रिंग |
मान्य वैल्यू: |
|
<Tokens>/<Token> एलिमेंट
इसका इस्तेमाल ValidateToken और invalidateToken कार्रवाइयों के साथ किया जाता है. ऐक्सेस टोकन
स्वीकार करना और रद्द करना भी देखें. <Token> एलिमेंट, उस फ़्लो वैरिएबल की पहचान करता है जो
रद्द किए जाने वाले टोकन के सोर्स के बारे में बताता है. उदाहरण के लिए, अगर डेवलपर से यह उम्मीद की जाए कि वे access_token
नाम के क्वेरी पैरामीटर के रूप में ऐक्सेस टोकन सबमिट करें, तो request.queryparam.access_token
इस्तेमाल करें.
<UserName> एलिमेंट
<UserName>request.queryparam.user_name</UserName>
इस एलिमेंट का इस्तेमाल सिर्फ़ पासवर्ड देने की अनुमति के प्रकार के साथ किया जाता है. पासवर्ड
दिए जाने के टाइप के साथ, उपयोगकर्ता के क्रेडेंशियल (पासवर्ड और उपयोगकर्ता नाम) OAuthV2 नीति
के लिए उपलब्ध कराए जाने चाहिए. <PassWord>
और <UserName>
एलिमेंट का इस्तेमाल,
वैरिएबल तय करने के लिए किया जाता है, जहां Edge इन वैल्यू को ढूंढ सकता है. अगर ये एलिमेंट तय नहीं किए गए हैं, तो
नीति के हिसाब से username
और password
नाम के फ़ॉर्म पैरामीटर में वैल्यू (डिफ़ॉल्ट रूप से) मिलनी चाहिए. वैल्यू न मिलने पर, नीति में गड़बड़ी की जानकारी मिलती है. आपके पास
<PassWord>
और <UserName>
एलिमेंट का इस्तेमाल करके,
क्रेडेंशियल वाले किसी भी फ़्लो वैरिएबल का रेफ़रंस देने का विकल्प है.
उदाहरण के लिए, किसी क्वेरी पैरामीटर में उपयोगकर्ता नाम पास किया जा सकता है और <UserName>
एलिमेंट को इस तरह से सेट किया जा सकता है: <UserName>request.queryparam.username</UserName>
.
एचटीटीपी हेडर में उपयोगकर्ता नाम शामिल करने के लिए, इस वैल्यू को request.header.username
पर सेट करें.
OAuthV2 नीति, क्रेडेंशियल की इन वैल्यू के साथ और कुछ नहीं करती. Edge सिर्फ़ इन क्रेडेंशियल वैल्यू के मौजूद होने की पुष्टि करता है. यह एपीआई डेवलपर पर निर्भर करता है कि वह वैल्यू के अनुरोध को फिर से हासिल करे और टोकन जनरेट करने की नीति के लागू होने से पहले, उसे किसी आइडेंटिटी प्रोवाइडर को भेजें.
ऐक्सेस टोकन और ऑथराइज़ेशन कोड का अनुरोध करना भी देखें.
डिफ़ॉल्ट: |
request.formparam.username (एक x-www-form-urlencoded और अनुरोध के मुख्य भाग में बताया गया है) |
मौजूदगी: |
ज़रूरी नहीं |
टाइप: | स्ट्रिंग |
मान्य वैल्यू: | कोई भी वैरिएबल सेटिंग. |
अनुदान टाइप के साथ इस्तेमाल किया जाता है: | पासवर्ड |
ऐक्सेस टोकन की पुष्टि करना
एपीआई प्रॉक्सी के लिए कोई टोकन एंडपॉइंट सेट अप हो जाने के बाद, उससे जुड़ी OAuthV2 नीति तय की जाती है.
यह नीति बताती है कि VerifyAccessToken
की कार्रवाई, उस फ़्लो के साथ अटैच की गई है जो
सुरक्षित संसाधन को दिखाता है.
उदाहरण के लिए, यह पक्का करने के लिए कि किसी एपीआई को भेजे गए सभी अनुरोधों को अनुमति दी गई हो, नीचे दी गई नीति ऐक्सेस टोकन की पुष्टि को लागू करती है:
<OAuthV2 name="VerifyOAuthAccessToken"> <Operation>VerifyAccessToken</Operation> </OAuthV2>
यह नीति सुरक्षित किए जाने के लिए, एपीआई रिसॉर्स के साथ अटैच की गई है. यह पक्का करने के लिए कि किसी एपीआई के सभी अनुरोधों की पुष्टि की जा चुकी है, नीति को प्रॉक्सीEndpoint अनुरोध PreFlow से जोड़ने के लिए, इस तरीके का इस्तेमाल करें:
<PreFlow> <Request> <Step><Name>VerifyOAuthAccessToken</Name></Step> </Request> </PreFlow>
इन वैकल्पिक एलिमेंट का इस्तेमाल करके, VerifyAccessToken कार्रवाई की डिफ़ॉल्ट सेटिंग बदली जा सकती है.
नाम | ब्यौरा |
---|---|
स्कोप |
स्कोप की इनके बीच की खाली जगह की सूची. अगर ऐक्सेस टोकन में, सूची में दिया गया कम से कम एक स्कोप मौजूद हो, तो पुष्टि हो जाएगी. उदाहरण के लिए, यह नीति ऐक्सेस टोकन की जांच करेगी, ताकि यह पक्का किया जा सके कि उसमें सूची में दिया गया कम से कम एक स्कोप शामिल है या नहीं. अगर READ या WRITE मौजूद है, तो पुष्टि हो जाएगी. <OAuthV2 name="ValidateOauthScopePolicy"> <Operation>VerifyAccessToken</Operation> <Scope>READ WRITE</Scope> </OAuthV2> |
AccessToken | वह वैरिएबल जहां ऐक्सेस टोकन मौजूद होने की उम्मीद होती है. उदाहरण के लिए,
request.queryparam.accesstoken . OAuth 2.0 की खास बातों के मुताबिक, डिफ़ॉल्ट रूप से ऐप्लिकेशन में, ऐक्सेस टोकन को अनुमति वाले एचटीटीपी हेडर में दिखाया जाना चाहिए. अगर ऐक्सेस टोकन को किसी ऐसी जगह पर दिखाना है जो स्टैंडर्ड नहीं है, जैसे कि
क्वेरी पैरामीटर या अनुमति के बजाय किसी दूसरे नाम से एचटीटीपी हेडर, तो इस सेटिंग का इस्तेमाल करें. |
ऐक्सेस टोकन की पुष्टि करना और ऐक्सेस टोकन और ऑथराइज़ेशन कोड का अनुरोध करना भी देखें.
अनुरोध के वैरिएबल की जगहें तय करना
नीति के तहत, हर तरह के अनुदान के लिए, मैसेज में जगह की जानकारी या ज़रूरी जानकारी का अनुमान लगाया जाता है. ये अनुमान, OAuth 2.0 स्पेसिफ़िकेशन पर आधारित हैं. अगर आपके ऐप्लिकेशन को OAuth 2.0 से जुड़ी ज़रूरी शर्तें पूरी नहीं करनी हैं, तो आपके पास हर पैरामीटर के लिए उन जगहों की जानकारी देने का विकल्प है जो उनके हिसाब से सही हैं. उदाहरण के लिए, किसी ऑथराइज़ेशन कोड को इस्तेमाल करते समय, आपके पास ऑथराइज़ेशन कोड की जगह, क्लाइंट आईडी, रीडायरेक्ट यूआरआई, और स्कोप की जानकारी देने का विकल्प होता है. इनकी जानकारी एचटीटीपी हेडर, क्वेरी पैरामीटर या फ़ॉर्म पैरामीटर के तौर पर दी जा सकती है.
इस उदाहरण में बताया गया है कि ज़रूरी ऑथराइज़ेशन कोड पैरामीटर की जगह को, एचटीटीपी हेडर के तौर पर कैसे तय किया जा सकता है:
... <GrantType>request.header.grant_type</GrantType> <Code>request.header.code</Code> <ClientId>request.header.client_id</ClientId> <RedirectUri>request.header.redirect_uri</RedirectUri> <Scope>request.header.scope</Scope> ...
इसके अलावा, अगर ज़रूरी हो, तो अपने क्लाइंट ऐप्लिकेशन के आधार को सपोर्ट करने के लिए, हेडर और क्वेरी पैरामीटर को मिक्स करके उनका मिलान किया जा सकता है:
... <GrantType>request.header.grant_type</GrantType> <Code>request.header.code</Code> <ClientId>request.queryparam.client_id</ClientId> <RedirectUri>request.queryparam.redirect_uri</RedirectUri> <Scope>request.queryparam.scope</Scope> ...
हर पैरामीटर के लिए सिर्फ़ एक जगह कॉन्फ़िगर की जा सकती है.
फ़्लो वैरिएबल
इस टेबल में दिए गए फ़्लो वैरिएबल, संबंधित OAuth नीतियों के लागू होने पर अपने-आप भर जाते हैं. इसलिए, ये वैरिएबल उन दूसरी नीतियों या ऐप्लिकेशन के लिए उपलब्ध होते हैं जिन्हें एपीआई प्रॉक्सी फ़्लो में लागू किया जाता है.
पुष्टि करने के लिए AccessToken की कार्रवाई
AdvertiserAccessToken कार्रवाई की जाती है. प्रॉक्सी सर्वर की एक्ज़ीक्यूशन की प्रोसेस में, बहुत सारे फ़्लो वैरिएबल अपने-आप भरे जाते हैं. ये वैरिएबल आपको ऐक्सेस टोकन, डेवलपर ऐप्लिकेशन, डेवलपर, और कंपनी से जुड़ी प्रॉपर्टी देते हैं. उदाहरण के लिए, इनमें से किसी भी वैरिएबल को पढ़ने के लिए, Assignments या JavaScript नीति का इस्तेमाल किया जा सकता है. बाद में ज़रूरत पड़ने पर इनका इस्तेमाल भी किया जा सकता है. ये वैरिएबल, डीबग करने में भी काम आ सकते हैं.
proxy.pathsuffix
से मिले) के साथ कॉन्फ़िगर किया गया है, तो एपीआई प्रॉडक्ट वैरिएबल की जानकारी अपने-आप भर जाएगी. फ़्लो.resource.name वैरिएबल को साफ़ तौर पर सेट करने की ज़रूरत नहीं है.
अगर एपीआई प्रॉडक्ट को मान्य एनवायरमेंट और एपीआई प्रॉक्सी के साथ कॉन्फ़िगर नहीं किया जाता है, तो
फ़्लो में, एपीआई प्रॉडक्ट वैरिएबल को पॉप्युलेट करने के लिए,
flow.resource.name
को साफ़ तौर पर सेट करना ज़रूरी है. प्रॉडक्ट कॉन्फ़िगरेशन के बारे में जानने के लिए, एपीआई पब्लिश करने के लिए Edge मैनेजमेंट एपीआई का इस्तेमाल करना लेख पढ़ें.
टोकन के लिए खास वैरिएबल
वैरिएबल | ब्यौरा |
---|---|
organization_name |
उस संगठन का नाम जहां प्रॉक्सी का इस्तेमाल किया जा रहा है. |
developer.id |
रजिस्टर किए गए क्लाइंट ऐप्लिकेशन से जुड़े डेवलपर का आईडी. |
developer.app.name |
रजिस्टर किए गए क्लाइंट ऐप्लिकेशन से जुड़े डेवलपर का नाम. |
client_id |
रजिस्टर किए गए क्लाइंट ऐप्लिकेशन का क्लाइंट आईडी. |
grant_type |
अनुरोध से जुड़ा अनुदान टाइप. |
token_type |
अनुरोध से जुड़ा टोकन टाइप. |
access_token |
ऐक्सेस टोकन, जिसकी पुष्टि की जा रही है. |
accesstoken.{custom_attribute} |
ऐक्सेस टोकन में मौजूद, नाम वाला कस्टम एट्रिब्यूट. |
issued_at |
ऐक्सेस टोकन जारी किए जाने की तारीख की जानकारी, Unix epoch टाइम में मिलीसेकंड में दी गई है. |
expires_in |
ऐक्सेस टोकन के खत्म होने की अवधि. इसे
सेकंड में दिखाया जाता है. ExpiresIn एलिमेंट, टोकन के रिस्पॉन्स और फ़्लो वैरिएबल में, समयसीमा खत्म होने की तारीख को मिलीसेकंड में सेट करता है. हालांकि,
इसकी वैल्यू को सेकंड में तय किया जाता है. |
status |
ऐक्सेस टोकन की स्थिति (उदाहरण के लिए, स्वीकार किया गया या रद्द किया गया). |
scope |
ऐक्सेस टोकन से जुड़ा स्कोप (अगर कोई है). |
apiproduct.<custom_attribute_name> |
रजिस्टर किए गए क्लाइंट ऐप्लिकेशन से जुड़े एपीआई प्रॉडक्ट का, नाम वाला कस्टम एट्रिब्यूट. |
apiproduct.name |
रजिस्टर किए गए क्लाइंट ऐप्लिकेशन से जुड़े एपीआई प्रॉडक्ट का नाम. |
revoke_reason |
(सिर्फ़ Apigee हाइब्रिड) यह बताता है कि ऐक्सेस टोकन रद्द क्यों किया गया है. इसकी वैल्यू |
ऐप्लिकेशन के हिसाब से वैरिएबल
ये वैरिएबल, टोकन से जुड़े डेवलपर ऐप्लिकेशन से जुड़े होते हैं.
वैरिएबल | ब्यौरा |
---|---|
app.name |
|
app.id |
|
app.accessType |
|
app.callbackUrl |
|
app.status |
स्वीकार या रद्द किया गया |
app.scopes |
|
app.appFamily |
|
app.apiproducts |
|
app.appParentStatus |
|
app.appType |
उदाहरण के लिए: डेवलपर |
app.appParentId |
|
app.created_by |
|
app.created_at |
|
app.last_modified_at |
|
app.last_modified_by |
|
app.{custom_attributes} |
रजिस्टर किए गए क्लाइंट ऐप्लिकेशन का, नाम वाला कस्टम एट्रिब्यूट. |
डेवलपर के लिए खास वैरिएबल
अगर app.appType "Company" है, तो कंपनी के एट्रिब्यूट भरे जाते हैं. साथ ही, अगर app.appType "डेवलपर" है, तो डेवलपर एट्रिब्यूट की वैल्यू अपने-आप भर जाती है.
वैरिएबल | ब्यौरा |
---|---|
डेवलपर के लिए खास वैरिएबल | |
developer.id |
|
developer.userName |
|
developer.firstName |
|
developer.lastName |
|
developer.email |
|
developer.status |
चालू या बंद |
developer.apps |
|
developer.created_by |
|
developer.created_at |
|
developer.last_modified_at |
|
developer.last_modified_by |
|
developer.{custom_attributes} |
डेवलपर का नाम वाला कस्टम एट्रिब्यूट. |
कंपनी के हिसाब से वैरिएबल
अगर app.appType "Company" है, तो कंपनी के एट्रिब्यूट भरे जाते हैं. साथ ही, अगर app.appType "डेवलपर" है, तो डेवलपर एट्रिब्यूट की वैल्यू अपने-आप भर जाती है.
वैरिएबल | ब्यौरा |
---|---|
company.id |
|
company.displayName |
|
company.apps |
|
company.appOwnerStatus |
|
company.created_by |
|
company.created_at |
|
company.last_modified_at |
|
company.last_modified_by |
|
company.{custom_attributes} |
कंपनी का नाम वाला कस्टम एट्रिब्यूट. |
जनरेटर कोड कार्रवाई
ये वैरिएबल तब सेट किए जाते हैं, जब generateAuthorizeCode कार्रवाई सही तरीके से पूरी हो जाती है:
प्रीफ़िक्स: oauthv2authcode.{policy_name}.{variable_name}
उदाहरण: oauthv2authcode.GenerateCodePolicy.code
वैरिएबल | ब्यौरा |
---|---|
code |
नीति के लागू होने पर, जनरेट हुआ ऑथराइज़ेशन कोड. |
redirect_uri |
रजिस्टर किए गए क्लाइंट ऐप्लिकेशन से जुड़ा रीडायरेक्ट यूआरआई. |
scope |
यह विकल्प OAuth के लिए है, जिसे क्लाइंट अनुरोध में पास किया गया है. हालांकि, यह स्कोप ज़रूरी नहीं है. |
client_id |
क्लाइंट अनुरोध में पास किया गया क्लाइंट आईडी. |
BringAccessToken और RefreshAccessToken की कार्रवाइयां तय की जाती हैं
ये वैरिएबल तब सेट किए जाते हैं, जब generateAccessToken और RecapToken की कार्रवाइयां सही तरीके से पूरी होती हैं. ध्यान दें कि क्लाइंट क्रेडेंशियल के अनुदान टाइप के फ़्लो पर, रीफ़्रेश टोकन वैरिएबल लागू नहीं होते.
प्रीफ़िक्स: oauthv2accesstoken.{policy_name}.{variable_name}
उदाहरण: oauthv2accesstoken.GenerateTokenPolicy.access_token
वैरिएबल का नाम | ब्यौरा |
---|---|
access_token |
जनरेट किया गया ऐक्सेस टोकन. |
client_id |
इस टोकन से जुड़े डेवलपर ऐप्लिकेशन का क्लाइंट आईडी. |
expires_in |
टोकन की समयसीमा खत्म होने की वैल्यू. ज़्यादा जानकारी के लिए, <ExpiresIn> एलिमेंट देखें. ध्यान दें कि जवाब में expires_in को सेकंड में दिखाया जाता है. |
scope |
टोकन के लिए कॉन्फ़िगर किए गए उपलब्ध स्कोप की सूची. OAuth2 स्कोप के साथ काम करना देखें. |
status |
approved या revoked . |
token_type |
BearerToken पर सेट है. |
developer.email |
रजिस्टर किए गए उस डेवलपर का ईमेल पता जिसके पास टोकन से जुड़ा डेवलपर ऐप्लिकेशन है. |
organization_name |
वह संगठन जहां प्रॉक्सी लागू होती है. |
api_product_list |
टोकन से जुड़े डेवलपर ऐप्लिकेशन से जुड़े प्रॉडक्ट की सूची. |
refresh_count |
|
refresh_token |
जनरेट किया गया रीफ़्रेश टोकन. ध्यान दें कि क्लाइंट क्रेडेंशियल के अनुदान टाइप के लिए, रीफ़्रेश टोकन जनरेट नहीं किए जाते. |
refresh_token_expires_in |
रीफ़्रेश टोकन का जीवनकाल, सेकंड में. |
refresh_token_issued_at |
समय की यह वैल्यू, स्ट्रिंग से जुड़ी 32-बिट टाइमस्टैंप की संख्या के बारे में बताती है. उदाहरण के लिए, 'बुधवार, 21 अगस्त, 2013 19:16:47 यूटीसी', टाइमस्टैंप वैल्यू 1377112607413 से जुड़ा होता है. |
refresh_token_status |
approved या revoked . |
GenerateAccessTokenImplicitGrant
ये वैरिएबल तब सेट किए जाते हैं, जब generateAccessTokenImplicit कार्रवाई, इंप्लिसिट ग्रांट टाइप फ़्लो के लिए सही तरीके से लागू होती है.
प्रीफ़िक्स: oauthv2accesstoken.{policy_name}.{variable_name}
उदाहरण: oauthv2accesstoken.RefreshTokenPolicy.access_token
वैरिएबल | ब्यौरा |
---|---|
oauthv2accesstoken.access_token |
नीति के लागू होने पर, जनरेट हुआ ऐक्सेस टोकन. |
oauthv2accesstoken.{policy_name}.expires_in |
टोकन के लिए समयसीमा खत्म होने की वैल्यू (सेकंड में). ज़्यादा जानकारी के लिए, <ExpiresIn> एलिमेंट देखें. |
गड़बड़ी के बारे में जानकारी
यह सेक्शन गड़बड़ी के कोड और दिखाए गए गड़बड़ी के मैसेज के बारे में बताता है. साथ ही, इस नीति के ट्रिगर होने पर Edge की मदद से सेट की गई गड़बड़ी के वैरिएबल के बारे में बताता है. यह जानकारी जानना ज़रूरी है कि क्या गड़बड़ियों को ठीक करने के लिए, गड़बड़ी से जुड़े नियम बनाए जा रहे हैं. ज़्यादा जानने के लिए, नीति से जुड़ी गड़बड़ियों के बारे में आपके लिए ज़रूरी जानकारी और गड़बड़ियों को ठीक करने के तरीके देखें.
रनटाइम से जुड़ी गड़बड़ियां
नीति के लागू होने पर ये गड़बड़ियां हो सकती हैं.
गड़बड़ी का कोड | एचटीटीपी कोड स्थिति | वजह | ऑपरेशन के ज़रिए चालू किया गया |
---|---|---|---|
steps.oauth.v2.access_token_expired |
401 | ऐक्सेस टोकन की समयसीमा खत्म हो गई है. |
पुष्टि करने के लिए AccessToken |
steps.oauth.v2.access_token_not_approved |
401 | ऐक्सेस टोकन रद्द कर दिया गया था. | VerifyAccessToken |
steps.oauth.v2.apiresource_doesnot_exist |
401 | अनुरोध किए गए संसाधन में, ऐक्सेस टोकन से जुड़ा कोई भी एपीआई प्रॉडक्ट मौजूद नहीं है. | VerifyAccessToken |
steps.oauth.v2.FailedToResolveAccessToken |
500 | इस नीति के मुताबिक, <AccessToken> एलिमेंट में दिए गए वैरिएबल में
ऐक्सेस टोकन मिल सकता है, लेकिन वैरिएबल को हल नहीं किया जा सका. |
GenerateAccessToken |
steps.oauth.v2.FailedToResolveAuthorizationCode |
500 | इस नीति के मुताबिक, <Code> एलिमेंट में दिए गए वैरिएबल में
एक ऑथराइज़ेशन कोड मिल सकता था, लेकिन वैरिएबल को हल नहीं किया जा सका. |
GenerateAuthorizationCode |
steps.oauth.v2.FailedToResolveClientId |
500 | इस नीति के मुताबिक, <ClientId> एलिमेंट में दिए गए वैरिएबल में Client-ID मिल सकता है.
हालांकि, वैरिएबल को हल नहीं किया जा सका. |
GeneAccessToken generateauthorizationCode generateAccessTokenImplicitGrant करानाAccessToken |
steps.oauth.v2.FailedToResolveRefreshToken |
500 | इस नीति के ज़रिए <RefreshToken> एलिमेंट में दिए गए वैरिएबल में
रीफ़्रेश टोकन मिल सकता है, लेकिन वैरिएबल को हल नहीं किया जा सका. |
RefreshAccessToken |
steps.oauth.v2.FailedToResolveToken |
500 | इस नीति से <Tokens> एलिमेंट में दिए गए वैरिएबल में
एक टोकन मिल सकता था, लेकिन वैरिएबल को हल नहीं किया जा सका. |
ValidateToken |
steps.oauth.v2.InsufficientScope |
403 | अनुरोध में दिए गए ऐक्सेस टोकन का दायरा, पुष्टि किए गए ऐक्सेस टोकन की नीति में दिए गए दायरे से मेल नहीं खाता. स्कोप के बारे में जानने के लिए, OAuth2 स्कोप के साथ काम करना देखें. | VerifyAccessToken |
steps.oauth.v2.invalid_access_token |
401 | क्लाइंट से भेजा गया ऐक्सेस टोकन अमान्य है. | VerifyAccessToken |
steps.oauth.v2.invalid_client |
401 |
गड़बड़ी का यह नाम तब दिखता है, जब नीति की ध्यान दें: हमारा सुझाव है कि आप |
जनरेट करेंAccessToken RefreshAccessToken |
steps.oauth.v2.invalid_request |
400 | गड़बड़ी के इस नाम का इस्तेमाल, कई तरह की गड़बड़ियों के लिए किया जाता है. आम तौर पर,
अनुरोध में ऐसे पैरामीटर जिनके मौजूद नहीं होने या गलत पैरामीटर होने की वजह से ऐसा होता है. अगर <GenerateResponse> को
false पर सेट किया गया है, तो गड़बड़ी के बारे में जानकारी
पाने के लिए, गड़बड़ी वाले वैरिएबल (नीचे बताया गया है) का इस्तेमाल करें. जैसे, गड़बड़ी का नाम और वजह. |
GeneAccessToken generateauthorizationCode generateAccessTokenImplicitGrant करानाAccessToken |
steps.oauth.v2.InvalidAccessToken |
401 | अनुमति देने वाले हेडर में "बियरर" शब्द नहीं है जो ज़रूरी है. उदाहरण
के लिए: Authorization: Bearer your_access_token |
VerifyAccessToken |
steps.oauth.v2.InvalidAPICallAsNo\ |
401 |
एपीआई प्रॉक्सी, ऐक्सेस टोकन से जुड़े प्रॉडक्ट में नहीं है. अहम जानकारी: पक्का करें कि ऐक्सेस टोकन से जुड़े प्रॉडक्ट को सही तरीके से कॉन्फ़िगर किया गया हो. उदाहरण के लिए, अगर रिसॉर्स पाथ में वाइल्डकार्ड का इस्तेमाल किया जाता है, तो पक्का करें कि वाइल्डकार्ड का इस्तेमाल सही तरीके से किया जा रहा हो. ज़्यादा जानकारी के लिए, एपीआई प्रॉडक्ट बनाना देखें. इस गड़बड़ी की वजहों के बारे में ज़्यादा जानने के लिए, यह Apigee कम्यूनिटी पोस्ट देखें. |
VerifyAccessToken |
steps.oauth.v2.InvalidClientIdentifier |
500 |
गड़बड़ी का यह नाम तब दिखता है, जब नीति की |
जनरेट करेंAccessToken |
steps.oauth.v2.InvalidParameter |
500 | इस नीति में ऐक्सेस टोकन या ऑथराइज़ेशन कोड की जानकारी दी जानी चाहिए, दोनों का नहीं. | जनरेटर कोड generateAccessTokenImplicitGrant |
steps.oauth.v2.InvalidTokenType |
500 | <Tokens>/<Token> एलिमेंट के लिए, आपको टोकन का टाइप बताना होगा, जैसे कि refreshtoken . अगर क्लाइंट गलत टाइप का यूआरएल पास करता है, तो यह गड़बड़ी दिखती है. |
ValidateToken invalidateToken |
steps.oauth.v2.MissingParameter |
500 | रिस्पॉन्स का टाइप token है, लेकिन इसके बारे में कोई जानकारी नहीं दी गई है. |
जनरेटर कोड generateAccessTokenImplicitGrant |
steps.oauth.v2.UnSupportedGrantType |
500 |
क्लाइंट ने एक ऐसा अनुदान टाइप बताया है जो नीति के मुताबिक काम नहीं करता (यह <SupportedGrantTypes> एलिमेंट में शामिल नहीं है). ध्यान दें: फ़िलहाल एक गड़बड़ी मिली है, जिसमें काम न करने वाले अनुदान के टाइप से जुड़ी गड़बड़ियां ठीक से नहीं दिखती हैं. अगर अनुमति के टाइप से जुड़ी ऐसी गड़बड़ी होती है जो काम नहीं करती, तो प्रॉक्सी, गड़बड़ी के फ़्लो में उम्मीद के मुताबिक जानकारी नहीं डालता है. |
GeneAccessToken generateauthorizationCode generateAccessTokenImplicitGrant करानाAccessToken |
डिप्लॉयमेंट से जुड़ी गड़बड़ियां
ये गड़बड़ियां तब हो सकती हैं, जब इस नीति वाले किसी प्रॉक्सी को डिप्लॉय किया जाता है.
गड़बड़ी का नाम | वजह |
---|---|
InvalidValueForExpiresIn |
|
InvalidValueForRefreshTokenExpiresIn |
<RefreshTokenExpiresIn> एलिमेंट के लिए, मान्य वैल्यू पॉज़िटिव पूर्णांक और -1 होनी चाहिए. |
InvalidGrantType |
<SupportedGrantTypes>
एलिमेंट में अनुमति का अमान्य टाइप दिया गया है. मान्य टाइप की सूची देखने के लिए, नीति का रेफ़रंस देखें. |
ExpiresInNotApplicableForOperation |
यह पक्का करें कि <Operations> एलिमेंट में बताई गई कार्रवाई की समयसीमा खत्म होने का इंतज़ार किया जा सकता है. उदाहरण के लिए, VerificationToken कार्रवाई नहीं की जाती है. |
RefreshTokenExpiresInNotApplicableForOperation |
पक्का करें कि <Operations> एलिमेंट में बताई गई कार्रवाई, रीफ़्रेश टोकन की समयसीमा के साथ काम करती हो. उदाहरण के लिए, VerificationToken कार्रवाई नहीं की जाती है. |
GrantTypesNotApplicableForOperation |
यह पक्का करें कि <SupportedGrantTypes> में बताए गए अनुमति टाइप, बताई गई कार्रवाई के लिए इस्तेमाल किए जा सकते हों. |
OperationRequired |
आपको ध्यान दें: अगर |
InvalidOperation |
आपको
ध्यान दें: अगर |
TokenValueRequired |
आपको <Tokens> एलिमेंट में, टोकन <Token> की वैल्यू देनी होगी. |
गड़बड़ी वाले वैरिएबल
ये वैरिएबल तब सेट किए जाते हैं, जब यह नीति रनटाइम के दौरान कोई गड़बड़ी ट्रिगर करती है.
<GenerateResponse>
को
false
पर सेट किया गया है, तो कोई गड़बड़ी होने पर इन वैरिएबल में जानकारी अपने-आप भर जाती है. अगर <GenerateResponse>
true
है, तो कोई गड़बड़ी होने पर, नीति क्लाइंट को तुरंत जवाब देती है --
गड़बड़ी वाला फ़्लो छोड़ दिया जाता है और इन वैरिएबल को अपने-आप नहीं भरा जाता. ज़्यादा जानकारी के लिए, नीति से जुड़ी गड़बड़ियों के बारे में आपके लिए ज़रूरी जानकारी देखें.वैरिएबल | जगह | उदाहरण |
---|---|---|
fault.name="fault_name" |
fault_name, गड़बड़ी का नाम है, जैसा कि ऊपर रनटाइम की गड़बड़ियां टेबल में दिया गया है. गड़बड़ी का नाम, गड़बड़ी के कोड का आखिरी हिस्सा होता है. | fault.name = "invalid_request" |
oauthV2.policy_name.failed |
policy_name, उस नीति का उपयोगकर्ता तय किया गया नाम है जिसकी वजह से गड़बड़ी हुई है. | oauthV2.GenerateAccesstoken.failed = true |
oauthV2.policy_name.fault.name |
policy_name, उस नीति का उपयोगकर्ता तय किया गया नाम है जिसकी वजह से गड़बड़ी हुई है. | oauthV2.GenerateAccesstoken.fault.name = invalid_request
ध्यान दें: VerificationAccessToken कार्रवाई के लिए, गड़बड़ी के नाम में यह सफ़िक्स शामिल होता है: |
oauthV2.policy_name.fault.cause |
policy_name, उस नीति का उपयोगकर्ता तय किया गया नाम है जिसकी वजह से गड़बड़ी हुई है. | oauthV2.GenerateAccesstoken.cause = Required param : grant_type |
गड़बड़ी के जवाब का उदाहरण
अगर <GenerateResponse>
एलिमेंट सही है, तो ये रिस्पॉन्स क्लाइंट को वापस भेजे जाते हैं.
errorcode
वाले हिस्से को फंसाएं. faultstring
के टेक्स्ट पर
भरोसा न करें, क्योंकि यह बदल सकता है.अगर <GenerateResponse>
true है, तो नीति इस फ़ॉर्मैट में, टोकन और कोड जनरेट करने वाली कार्रवाइयों के लिए गड़बड़ियां दिखाती है. पूरी सूची देखने के लिए, OAuth एचटीटीपी गड़बड़ी
रिस्पॉन्स रेफ़रंस देखें.
{"ErrorCode" : "invalid_client", "Error" :"ClientId is Invalid"}
अगर <GenerateResponse>
true है, तो नीति
कार्रवाइयों की पुष्टि और पुष्टि करने के लिए, इस फ़ॉर्मैट में गड़बड़ियां दिखाती है. पूरी सूची देखने के लिए, OAuth एचटीटीपी गड़बड़ी
रिस्पॉन्स रेफ़रंस देखें.
{ { "fault":{ "faultstring":"Invalid Access Token", "detail":{ "errorcode":"keymanagement.service.invalid_access_token" } } }
गड़बड़ी के नियम का उदाहरण
<FaultRule name=OAuthV2 Faults"> <Step> <Name>AM-InvalidClientResponse</Name> <Condition>(fault.name = "invalid_client") OR (fault.name = "InvalidClientIdentifier")</Condition> </Step> <Step> <Name>AM-InvalidTokenResponse</Name> <Condition>(fault.name = "invalid_access_token")</Condition> </Step> <Condition>(oauthV2.failed = true) </Condition> </FaultRule>
नीति स्कीमा
हर तरह की नीति को एक्सएमएल स्कीमा (.xsd
) से तय किया जाता है. रेफ़रंस के लिए, नीति के स्कीमा GitHub पर उपलब्ध हैं.
डिफ़ॉल्ट OAuth कॉन्फ़िगरेशन के साथ काम करना
Apigee Edge पर, हर संगठन (यहां तक कि मुफ़्त में आज़माने वाला संगठन भी) के लिए एक OAuth टोकन एंडपॉइंट दिया जाता है. एंडपॉइंट को एपीआई प्रॉक्सी में oauth नाम की नीतियों के हिसाब से, पहले से कॉन्फ़िगर किया गया है. Apigee Edge पर खाता बनाते ही, टोकन एंडपॉइंट का इस्तेमाल शुरू किया जा सकता है. ज़्यादा जानकारी के लिए, OAuth एंडपॉइंट के बारे में जानकारी देखें.
ऐक्सेस टोकन को इंस्टॉल करना
डिफ़ॉल्ट रूप से, ऐक्सेस टोकन और रीफ़्रेश टोकन (अगर यह मौजूद है), दोनों की समयसीमा खत्म होने के तीन दिन (25,9200 सेकंड) के बाद OAuth2 टोकन को Apigee Edge सिस्टम से पूरी तरह मिटा दिया जाता है. कुछ मामलों में, आपको इस डिफ़ॉल्ट सेटिंग को बदलना पड़ सकता है. उदाहरण के लिए, अगर ज़्यादा संख्या में टोकन जनरेट हो रहे हैं, तो हो सकता है कि डिस्क की जगह बचाने के लिए, पूरी तरह से डेटा मिटाने में लगने वाला समय कम करना पड़े.
अगर आपने Edge for Private Cloud का इस्तेमाल किया है, तो इस सेक्शन में बताए गए तरीके के मुताबिक, संगठन की प्रॉपर्टी को सेट करके इस डिफ़ॉल्ट सेटिंग को बदला जा सकता है. जिन टोकन की समयसीमा खत्म हो गई है उन्हें तीन दिनों तक पूरी तरह मिटाने की नीति, प्राइवेट क्लाउड के वर्शन 4.19.01 और इसके बाद के वर्शन पर लागू होती है. इससे पहले वाले वर्शन के लिए, डिफ़ॉल्ट तौर पर पूरी तरह मिटाने की अवधि 180 दिन की होती है.)
Edge Private Cloud 4.16.01 और उसके बाद के वर्शन के लिए, पूरी तरह मिटाने की सेटिंग अपडेट की जा रही हैं
ध्यान दें: सिर्फ़ इन सेटिंग के लागू होने के बाद जनरेट होने वाले टोकन पर ही असर पड़ता है. ये सेटिंग पहले जनरेट किए गए टोकन पर लागू नहीं होती हैं.
- बदलाव करने के लिए, इस फ़ाइल को खोलें:
/opt/apigee/customer/application/message-processor.properties
- नीचे दी गई प्रॉपर्टी को जोड़ें, ताकि यह तय किया जा सके कि किसी टोकन की समयसीमा खत्म होने के बाद, उसे पूरी तरह मिटाने से पहले कितने सेकंड इंतज़ार करना है:
conf_keymanagement_oauth.access.token.purge.after.seconds=<number of seconds>
- मैसेज प्रोसेस करने वाली प्रोसेस को रीस्टार्ट करें. उदाहरण के लिए:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
<ExpiresIn>
और <RefreshTokenExpiresIn>
एट्रिब्यूट का इस्तेमाल करके, टोकन
की समयसीमा सेट की जा सकती है.
Edge Private Cloud 4.15.07 के लिए, पूरी तरह मिटाने की सेटिंग अपडेट की जा रही हैं
ध्यान दें: सिर्फ़ इन सेटिंग के लागू होने के बाद जनरेट होने वाले टोकन पर ही असर पड़ता है. ये सेटिंग पहले जनरेट किए गए टोकन पर लागू नहीं होती हैं.
-
OAuthV2 नीति में,
<ExpiresIn>
और<RefreshTokenExpiresIn>
एट्रिब्यूट के लिए पॉज़िटिव वैल्यू सेट करें. वैल्यू मिलीसेकंड में हों. उदाहरण के लिए:<ExpiresIn>1000</ExpiresIn> <RefreshTokenExpiresIn>10000</RefreshTokenExpiresIn>
-
प्रॉक्सी को फिर से डिप्लॉय करें.
-
अपने संगठन के लिए टोकन पूरी तरह मिटाने वाली प्रॉपर्टी अपडेट करने के लिए इस एपीआई का इस्तेमाल करें:
POST https://<host-name>/v1/organizations/<org-name>
पेलोड:
<Organization name="AutomationOrganization"> <Description>Desc</Description> <Properties> <Property name="keymanagement.oauth20.access.token.purge">true</Property> <Property name="keymanagement.oauth20.access.token.purge.after.seconds">120</Property> </Properties> </Organization>
-
मैसेज प्रोसेस करने वाली प्रोसेस को रीस्टार्ट करें. उदाहरण के लिए:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
यह एपीआई, AutomationOrganization नाम के संगठन के लिए, टोकन पूरी तरह से मिटाने वाली प्रॉपर्टी को 'सही' पर सेट करता है. इस मामले में, टोकन और रीफ़्रेश टोकन, दोनों की समयसीमा खत्म होने के 120 सेकंड बाद, ऐक्सेस टोकन डेटाबेस से पूरी तरह मिटा दिया जाएगा.
आरएफ़सी का पालन न करने वाला व्यवहार
OAuthV2 नीति, टोकन रिस्पॉन्स के तौर पर दिखती है. इसमें कुछ ऐसी प्रॉपर्टी होती हैं जो आरएफ़सी का पालन नहीं करती हैं. इस टेबल में उन प्रॉपर्टी को दिखाया गया है जो OAuthV2 नीति का पालन नहीं करने वाली हैं और नीति का पालन करती हैं.
OAuthV2 रिटर्न: | RFC का पालन करने वाली प्रॉपर्टी: |
---|---|
"token_type":"BearerToken" |
"token_type":"Bearer"
|
"expires_in":"3600" |
"expires_in":3600
(अनुपालन मान एक संख्या है, न कि कोई स्ट्रिंग.) |
साथ ही, समय-सीमा खत्म हो चुके रीफ़्रेश टोकन के लिए गड़बड़ी का रिस्पॉन्स, तब मिलता है, जब grant_type = refresh_token
:
{"ErrorCode" : "invalid_request", "Error" :"Refresh Token expired"}
हालांकि, RFC का पालन करने वाला जवाब यह है:
{"error" : "invalid_grant", "error_description" :"refresh token expired"}