GetOAuthV2Info नीति

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

क्या

यह ऐक्सेस टोकन, रीफ़्रेश टोकन, ऑथराइज़ेशन कोड, और क्लाइंट ऐप्लिकेशन के एट्रिब्यूट की जानकारी इकट्ठा करता है. साथ ही, उन एट्रिब्यूट की वैल्यू के साथ वैरिएबल भरता है.

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

इस नीति को पास किया गया ऐक्सेस टोकन मान्य होना चाहिए. ऐसा न होने पर, नीति invalid_access_token गड़बड़ी दिखाएगी.

सैंपल

यहां दिए गए सैंपल में, Get OAuth V2 Info नीति का इस्तेमाल किया गया है. इससे OAuth2 वर्कफ़्लो के अलग-अलग कॉम्पोनेंट के बारे में जानकारी मिलती है. इसके बाद, कोड में उस जानकारी को ऐक्सेस किया जाता है.

ऐक्सेस टोकन

ऐक्सेस टोकन का रेफ़रंस पाने के लिए, अपनी नीति में <AccessToken> एलिमेंट का इस्तेमाल करें.

इस उदाहरण में, "access_token" नाम के क्वेरी पैरामीटर में ऐक्सेस टोकन मिलने की उम्मीद है. हालांकि, लागू करने से जुड़ी ज़्यादा जानकारी आपके हिसाब से तय होती है:

<GetOAuthV2Info name="MyTokenAttrsPolicy">
  <AccessToken ref="request.queryparam.access_token"></AccessToken>
</GetOAuthV2Info>

ऐक्सेस टोकन मिलने पर, नीति टोकन की प्रोफ़ाइल ढूंढती है और प्रोफ़ाइल के डेटा के साथ वैरिएबल का एक सेट भरती है.

इसके बाद, JavaScript या किसी अन्य तरीके से वैरिएबल को ऐक्सेस किया जा सकता है. यहां दिए गए उदाहरण में, JavaScript का इस्तेमाल करके ऐक्सेस टोकन से जुड़े स्कोप वापस पाने का तरीका बताया गया है:

var scope = context.getVariable('oauthv2accesstoken.MyTokenAttrsPolicy.scope');

ध्यान दें कि कोड में उन वैरिएबल को ऐक्सेस करने के लिए, आपको उनके पहले "oauthv2accesstoken" जोड़ना होगा. ऐक्सेस टोकन के ज़रिए उपलब्ध वैरिएबल की पूरी सूची देखने के लिए, ऐक्सेस टोकन वैरिएबल पर जाएं.

पुष्टि करने वाला कोड

ओटीपी एट्रिब्यूट पाने के लिए, अपनी नीति में <AuthorizationCode> एलिमेंट का इस्तेमाल करें.

इस उदाहरण में, "code" नाम के फ़ॉर्म पैरामीटर में ऐक्सेस टोकन मिलने की उम्मीद है. हालांकि, इसे लागू करने के बारे में ज़्यादा जानकारी आपके पास है:

<GetOAuthV2Info name="MyAuthCodeAttrsPolicy">
  <AuthorizationCode ref="request.formparam.code"></AuthorizationCode>
</GetOAuthV2Info>

पुष्टि करने वाले कोड के आधार पर, नीति कोड की जानकारी ढूंढती है. इसके बाद, पुष्टि करने वाले कोड के डेटा के साथ वैरिएबल का एक सेट पॉप्युलेट करती है.

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

var attr = context.getVariable(oauthv2authcode.MyAuthCodeAttrsPolicy.custom_attribute_name);

ध्यान दें कि कोड में उन वैरिएबल को ऐक्सेस करने के लिए, आपको उनके पहले "oauthv2authcode" जोड़ना होगा. ऑथराइज़ेशन कोड के ज़रिए उपलब्ध वैरिएबल की पूरी सूची देखने के लिए, ऑथराइज़ेशन कोड वैरिएबल पर जाएं.

रीफ़्रेश टोकन

रीफ़्रेश टोकन एट्रिब्यूट पाने के लिए, अपनी नीति में <RefreshToken> एलिमेंट का इस्तेमाल करें.

इस उदाहरण में, "refresh_token" नाम के क्वेरी पैरामीटर में ऐक्सेस टोकन मिलने की उम्मीद है. हालांकि, लागू करने से जुड़ी ज़्यादा जानकारी आपके हिसाब से तय की जाती है:

<GetOAuthV2Info name="MyRefreshTokenAttrsPolicy">
  <RefreshToken ref="request.queryparam.refresh_token"/>
</GetOAuthV2Info>

रीफ़्रेश टोकन दिए जाने पर, नीति रीफ़्रेश टोकन की जानकारी ढूंढती है. इसके बाद, रीफ़्रेश टोकन के डेटा के साथ वैरिएबल का एक सेट भरती है.

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

var attr = context.getVariable(oauthv2refreshtoken.MyRefreshTokenAttrsPolicy.accesstoken.custom_attribute_name);

ध्यान दें कि कोड में वैरिएबल ऐक्सेस करने के लिए, आपको उनके नाम के पहले "oauthv2refreshtoken" जोड़ना होगा. रीफ़्रेश टोकन के ज़रिए उपलब्ध वैरिएबल की पूरी सूची देखने के लिए, रीफ़्रेश टोकन वैरिएबल पर जाएं.

स्थिर

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

<GetOAuthV2Info name="GetTokenAttributes">
  <AccessToken>shTUmeI1geSKin0TODcGLXBNe9vp</AccessToken>
</GetOAuthV2Info>

ऐसा अन्य सभी टोकन टाइप (क्लाइंट आईडी, ऑथराइज़ेशन कोड, और रीफ़्रेश टोकन) के साथ भी किया जा सकता है.

क्लाइंट आईडी

इस उदाहरण में, Client ID का इस्तेमाल करके क्लाइंट ऐप्लिकेशन के बारे में जानकारी पाने का तरीका बताया गया है. लागू होने पर, नीति क्लाइंट की जानकारी के साथ वैरिएबल का एक सेट भरती है. इस मामले में, नीति के तहत क्लाइंट आईडी को client_id नाम के क्वेरी पैरामीटर में ढूंढने की उम्मीद की जाती है. क्लाइंट आईडी के आधार पर, नीति क्लाइंट की प्रोफ़ाइल ढूंढती है और प्रोफ़ाइल डेटा के साथ वैरिएबल का एक सेट भरती है. वैरिएबल के नाम की शुरुआत में oauthv2client. जोड़ा जाएगा

<GetOAuthV2Info name="GetClientAttributes">
  <ClientId ref="request.queryparam.client_id"></ClientId>
</GetOAuthV2Info>

इसके बाद, JavaScript या किसी अन्य तरीके से वैरिएबल को ऐक्सेस किया जा सकता है. उदाहरण के लिए, JavaScript का इस्तेमाल करके क्लाइंट ऐप्लिकेशन से जुड़े डेवलपर ऐप्लिकेशन का नाम और डेवलपर का ईमेल पाने के लिए:

context.getVariable("oauthv2client.GetClientAttributes.developer.email");
context.getVariable("oauthv2client.GetClientAttributes.developer.app.name");

एलिमेंट रेफ़रंस

इस एलिमेंट रेफ़रंस में, GetOAuthV2Info नीति के एलिमेंट और एट्रिब्यूट के बारे में बताया गया है.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<GetOAuthV2Info async="false" continueOnError="false" enabled="true" name="GetOAuthV2Info-1"
    <DisplayName>Get OAuth v2.0 Info 1</DisplayName>
    <AccessToken ref="variable"></AccessToken>
    <AuthorizationCode ref="variable"></AuthorizationCode>
    <ClientId ref="variable"></ClientId>
    <RefreshToken ref="variable"></RefreshToken>
</GetOAuthV2Info>

<GetOAuthV2Info> एट्रिब्यूट

<GetOAuthV2Info async="false" continueOnError="false" enabled="true" name="Get-OAuth-v20-Info-1">

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

एट्रिब्यूट ब्यौरा डिफ़ॉल्ट मौजूदगी
name

नीति का अंदरूनी नाम. name एट्रिब्यूट की वैल्यू ये काम कर सकती है: अक्षरों, संख्याओं, स्पेस, हाइफ़न, अंडरस्कोर, और फ़ुलस्टॉप को शामिल करें. यह मान नहीं हो सकता 255 वर्णों से ज़्यादा होने चाहिए.

इसके अलावा, नीति को लेबल करने के लिए, <DisplayName> एलिमेंट का इस्तेमाल करें प्रबंधन यूज़र इंटरफ़ेस (यूआई) प्रॉक्सी एडिटर को अलग, आम भाषा में इस्तेमाल करने वाले नाम के साथ किया जा सकता है.

लागू नहीं ज़रूरी है
continueOnError

किसी नीति के काम न करने पर, गड़बड़ी दिखाने के लिए false पर सेट करें. यह उम्मीद है व्यवहार की जानकारी देने वाला डेटा.

नीति के लागू होने के बाद भी फ़्लो को एक्ज़ीक्यूट करने के लिए, इसे true पर सेट करें विफल होता है.

गलत वैकल्पिक
enabled

नीति को लागू करने के लिए, true पर सेट करें.

नीति को बंद करने के लिए, false पर सेट करें. नीति लागू किया जाता है, भले ही वह किसी फ़्लो से जुड़ा रहता हो.

सही वैकल्पिक
async

यह एट्रिब्यूट अब काम नहीं करता.

गलत बहिष्कृत

&lt;DisplayName&gt; एलिमेंट

इस कॉलम में नीति को लेबल करने के लिए, name एट्रिब्यूट के साथ-साथ इस्तेमाल करें मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) प्रॉक्सी एडिटर, जिसका नाम अलग और सामान्य भाषा में है.

<DisplayName>Policy Display Name</DisplayName>
डिफ़ॉल्ट

लागू नहीं

अगर आप इस एलिमेंट को छोड़ देते हैं, तो नीति की name एट्रिब्यूट की वैल्यू यह होगी इस्तेमाल किया गया.

मौजूदगी वैकल्पिक
टाइप स्ट्रिंग

<AccessToken> एलिमेंट

यह किसी ऐक्सेस टोकन के लिए प्रोफ़ाइल वापस पाता है. आपको ऐक्सेस टोकन स्ट्रिंग या लिटरल टोकन स्ट्रिंग (कम ही ऐसा होता है) वाला वैरिएबल पास करना होगा. इस उदाहरण में, ऐक्सेस टोकन को अनुरोध में पास किए गए क्वेरी पैरामीटर से वापस पाया जाता है. अगर आपको रद्द किए गए या समयसीमा खत्म हो चुके टोकन के लिए जानकारी दिखानी है, तो <IgnoreAccessTokenStatus> एलिमेंट का इस्तेमाल करें.

<AccessToken ref="request.queryparam.access_token"></AccessToken>

डिफ़ॉल्ट:

request.formparam.access_token (a x-www-form-urlencoded and specified in the request body)

मौजूदगी:

वैकल्पिक

टाइप: स्ट्रिंग
मान्य वैल्यू:

यह एक फ़्लो वैरिएबल होता है, जिसमें ऐक्सेस टोकन स्ट्रिंग या लिटरल स्ट्रिंग होती है.


<AuthorizationCode> एलिमेंट

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

<AuthorizationCode ref="request.queryparam.authorization_code"></AuthorizationCode>

डिफ़ॉल्ट:

request.formparam.access_token (a x-www-form-urlencoded and specified in the request body)

मौजूदगी:

वैकल्पिक

टाइप: स्ट्रिंग
मान्य वैल्यू:

यह ऑथराइज़ेशन कोड स्ट्रिंग वाला फ़्लो वैरिएबल या लिटरल स्ट्रिंग होता है.

<ClientId> एलिमेंट

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

<ClientId ref="request.queryparam.client_id"></ClientId>

डिफ़ॉल्ट:

request.formparam.access_token (a x-www-form-urlencoded and specified in the request body)

मौजूदगी:

वैकल्पिक

टाइप: स्ट्रिंग
मान्य वैल्यू: यह ऑथराइज़ेशन कोड स्ट्रिंग वाला फ़्लो वैरिएबल या लिटरल स्ट्रिंग होता है.

<IgnoreAccessTokenStatus> एलिमेंट

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

<IgnoreAccessTokenStatus>true</IgnoreAccessTokenStatus>

डिफ़ॉल्ट:

गलत

मौजूदगी:

वैकल्पिक

टाइप: बूलियन
मान्य वैल्यू: सही या गलत

<RefreshToken> एलिमेंट

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

<RefreshToken ref="request.queryparam.refresh_token"></RefreshToken>

डिफ़ॉल्ट:

request.formparam.access_token (a x-www-form-urlencoded and specified in the request body)

मौजूदगी:

वैकल्पिक

टाइप: स्ट्रिंग
मान्य वैल्यू:

यह एक फ़्लो वैरिएबल होता है, जिसमें रीफ़्रेश टोकन स्ट्रिंग होती है या यह एक लिटरल स्ट्रिंग होती है.

फ़्लो वैरिएबल

GetOAuthV2Info नीति इन वैरिएबल को भरती है. इसका इस्तेमाल आम तौर पर उन मामलों में किया जाता है जहां आपको प्रोफ़ाइल डेटा की ज़रूरत होती है, लेकिन जहां अब तक कोई अनुमति नहीं दी गई है या पुष्टि नहीं हुई है. .

क्लाइंट आईडी वैरिएबल

ClientId एलिमेंट सेट होने पर, इन वैरिएबल में वैल्यू अपने-आप भर जाती हैं:

oauthv2client.{policy_name}.client_id
oauthv2client.{policy_name}.client_secret
oauthv2client.{policy_name}.redirection_uris // Note the spelling -- 'redirection_uris'
oauthv2client.{policy_name}.developer.email
oauthv2client.{policy_name}.developer.app.name
oauthv2client.{policy_name}.developer.id
oauthv2client.{policy_name}.{developer_app_custom_attribute_name}

ऐक्सेस टोकन वैरिएबल

AccessToken एलिमेंट सेट होने पर, इन वैरिएबल में वैल्यू अपने-आप भर जाती हैं:

oauthv2accesstoken.{policy_name}.developer.id
oauthv2accesstoken.{policy_name}.developer.app.name
oauthv2accesstoken.{policy_name}.developer.app.id
oauthv2accesstoken.{policy_name}.developer.email

oauthv2accesstoken.{policy_name}.organization_name
oauthv2accesstoken.{policy_name}.api_product_list

oauthv2accesstoken.{policy_name}.access_token
oauthv2accesstoken.{policy_name}.scope
oauthv2accesstoken.{policy_name}.expires_in //in seconds
oauthv2accesstoken.{policy_name}.status
oauthv2accesstoken.{policy_name}.client_id
oauthv2accesstoken.{policy_name}.accesstoken.{custom_attribute_name}

oauthv2accesstoken.{policy_name}.refresh_token
oauthv2accesstoken.{policy_name}.refresh_token_status
oauthv2accesstoken.{policy_name}.refresh_token_expires_in //in seconds

oauthv2accesstoken.{policy_name}.refresh_count
oauthv2accesstoken.{policy_name}.refresh_token_issued_at
oauthv2accesstoken.{policy_name}.revoke_reason //Apigee hybrid only with value of REVOKED_BY_APP, REVOKED_BY_ENDUSER, REVOKED_BY_APP_ENDUSER, or TOKEN_REVOKED

ऑथराइज़ेशन कोड वैरिएबल

AuthorizationCode एलिमेंट सेट होने पर, इन वैरिएबल का डेटा अपने-आप भर जाता है:

oauthv2authcode.{policy_name}.code
oauthv2authcode.{policy_name}.scope
oauthv2authcode.{policy_name}.redirect_uri
oauthv2authcode.{policy_name}.client_id
oauthv2authcode.{policy_name}.{auth_code_custom_attribute_name}

रीफ़्रेश टोकन वैरिएबल

RefreshToken एलिमेंट सेट होने पर, इन वैरिएबल की वैल्यू अपने-आप भर जाती है:

oauthv2refreshtoken.{policy_name}.developer.id
oauthv2refreshtoken.{policy_name}.developer.app.name
oauthv2refreshtoken.{policy_name}.developer.app.id
oauthv2refreshtoken.{policy_name}.developer.email
oauthv2refreshtoken.{policy_name}.organization_name
oauthv2refreshtoken.{policy_name}.api_product_list

oauthv2refreshtoken.{policy_name}.access_token
oauthv2refreshtoken.{policy_name}.scope
oauthv2refreshtoken.{policy_name}.expires_in //in seconds

oauthv2refreshtoken.{policy_name}.status
oauthv2refreshtoken.{policy_name}.client_id
oauthv2refreshtoken.{policy_name}.accesstoken.{custom_attribute_name}

oauthv2refreshtoken.{policy_name}.refresh_token
oauthv2refreshtoken.{policy_name}.refresh_token_status
oauthv2refreshtoken.{policy_name}.refresh_token_expires_in //in seconds

oauthv2refreshtoken.{policy_name}.refresh_count
oauthv2refreshtoken.{policy_name}.refresh_token_issued_at
oauthv2refreshtoken.{policy_name}.revoke_reason //Apigee hybrid only with value of REVOKED_BY_APP, REVOKED_BY_ENDUSER, REVOKED_BY_APP_ENDUSER, or TOKEN_REVOKED

स्कीमा

नीति के हर टाइप को एक्सएमएल स्कीमा (.xsd) के ज़रिए तय किया जाता है. रेफ़रंस के लिए, नीति के स्कीमा GitHub पर उपलब्ध हैं.

गड़बड़ी की जानकारी

This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.

Runtime errors

These errors can occur when the policy executes. The error names shown below are the strings that are assigned to the fault.name variable when an error occurs. See the Fault variables section below for more details.

Fault code HTTP status Cause
steps.oauth.v2.access_token_expired 500 The access token sent to the policy is expired.
steps.oauth.v2.authorization_code_expired 500 The authorization code sent to the policy is expired.
steps.oauth.v2.invalid_access_token 500 The access token sent to the policy is invalid.
steps.oauth.v2.invalid_client-invalid_client_id 500 The client ID sent to the policy is invalid.
steps.oauth.v2.invalid_refresh_token 500 The refresh token sent to the policy is invalid.
steps.oauth.v2.invalid_request-authorization_code_invalid 500 The authorization code sent to the policy is invalid.
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound 401 Please see this Apigee Community post for information about troubleshooting this error.
steps.oauth.v2.refresh_token_expired 500 The refresh token sent to the policy is expired.

Deployment errors

Refer to the message reported in the UI for information about deployment errors.

Fault variables

These variables are set when this policy triggers an error at runtime.

Variables Where Example
fault.name="fault_name" fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "IPDeniedAccess"
oauthV2.policy_name.failed policy_name is the user-specified name of the policy that threw the fault. oauthV2.GetTokenInfo.failed = true
oauthV2.policy_name.fault.name policy_name is the user-specified name of the policy that threw the fault. oauthV2.GetToKenInfo.fault.name = invalid_client-invalid_client_id
oauthV2.policy_name.fault.cause policy_name is the user-specified name of the policy that threw the fault. oauthV2.GetTokenInfo.cause = ClientID is Invalid

Example error response

{  
   "fault":{  
      "faultstring":"ClientId is Invalid",
      "detail":{  
         "errorcode":"keymanagement.service.invalid_client-invalid_client_id"
      }
   }
}

Example fault rule

<FaultRule name="OAuthV2 Faults">
    <Step>
        <Name>AM-InvalidClientIdResponse</Name>
    </Step>
    <Condition>(fault.name = "invalid_client-invalid_client_id")</Condition>
</FaultRule>

मिलते-जुलते विषय