OAuth V2 नीति को रद्द करें

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

नीति का आइकॉन

खास जानकारी

यह डेवलपर ऐप्लिकेशन आईडी या ऐप्लिकेशन के असली उपयोगकर्ता के आईडी या दोनों से जुड़े OAuth2 ऐक्सेस टोकन रद्द करता है.

OAuth 2.0 ऐक्सेस टोकन जनरेट करने के लिए, OAuthv2 नीति का इस्तेमाल करें. Apigee से जनरेट किए गए टोकन का फ़ॉर्मैट यह होता है:

{
  "issued_at" : "1421847736581",
  "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a",
  "scope" : "READ",
  "status" : "approved",
  "api_product_list" : "[PremiumWeatherAPI]",
  "expires_in" : "3599", //--in seconds
  "developer.email" : "tesla@weathersample.com",
  "organization_id" : "0",
  "token_type" : "BearerToken",
  "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP",
  "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL",
  "organization_name" : "myorg",
  "refresh_token_expires_in" : "0", //--in seconds
  "refresh_count" : "0"
}

application_name एलिमेंट में, टोकन से जुड़ा डेवलपर ऐप्लिकेशन आईडी होता है.

डिफ़ॉल्ट रूप से, Apigee टोकन में असली उपयोगकर्ता का आईडी शामिल नहीं करता. OAuthv2 नीति में <AppEndUser> एलिमेंट जोड़कर, Apigee को असली उपयोगकर्ता का आईडी शामिल करने के लिए कॉन्फ़िगर किया जा सकता है:

<OAuthV2 name="GenerateAccessTokenClient">
    <Operation>GenerateAccessTokenV/Operation>
    ...
    <AppEndUser>request.queryparam.app_enduser</AppEndUser>
</OAuthV2>

इस उदाहरण में, क्वेरी पैरामीटर में app_enduser नाम का इस्तेमाल करके, असली उपयोगकर्ता का आईडी OAuthv2 नीति को पास करें. इसके बाद, असली उपयोगकर्ता का आईडी, टोकन में app_enduser एलिमेंट में शामिल किया जाता है:

{
 "issued_at" : "1421847736581",
 "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a",
 "scope" : "READ",
 "app_enduser" : "6ZG094fgnjNf02EK",
 "status" : "approved",
 "api_product_list" : "[PremiumWeatherAPI]",
 "expires_in" : "3599", //--in seconds
 "developer.email" : "tesla@weathersample.com",
 "organization_id" : "0",
 "token_type" : "BearerToken",
 "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP",
 "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL",
 "organization_name" : "myorg",
 "refresh_token_expires_in" : "0", //--in seconds
 "refresh_count" : "0"
}

डेवलपर ऐप्लिकेशन आईडी के हिसाब से रद्द करना

डेवलपर ऐप्लिकेशन आईडी से जुड़े OAuth2 ऐक्सेस टोकन रद्द करें. Apigee से जनरेट किए गए सभी OAuth2 ऐक्सेस टोकन में, टोकन से जुड़े डेवलपर ऐप्लिकेशन का आईडी शामिल होता है. इसके बाद, उस ऐप्लिकेशन आईडी के आधार पर टोकन रद्द किए जा सकते हैं.

ऐप्लिकेशन के असली उपयोगकर्ता के आईडी के हिसाब से रद्द करना

किसी खास ऐप्लिकेशन के असली उपयोगकर्ता के आईडी से जुड़े OAuth2 ऐक्सेस टोकन रद्द करें. यह उस उपयोगकर्ता के आईडी से जुड़ा टोकन है जिसे टोकन जारी किए गए थे.

डिफ़ॉल्ट रूप से, OAuth ऐक्सेस टोकन में असली उपयोगकर्ता के आईडी के लिए कोई फ़ील्ड नहीं होता. असली उपयोगकर्ता के आईडी के हिसाब से, OAuth 2.0 ऐक्सेस टोकन रद्द करने की सुविधा चालू करने के लिए, आपको OAuthv2 policy को कॉन्फ़िगर करना होगा, ताकि टोकन में उपयोगकर्ता आईडी शामिल किया जा सके. जैसा कि ऊपर दिखाया गया है.

ऐप्लिकेशन के असली उपयोगकर्ता का आईडी पाने के लिए, डेवलपर ऐप्लिकेशन के एपीआई का इस्तेमाल करें.

सैंपल

नीचे दिए गए सैंपल में, OAuth2 ऐक्सेस टोकन रद्द करने के लिए, Revoke OAuth V2 नीति का इस्तेमाल किया गया है.

डेवलपर ऐप्लिकेशन आईडी

डेवलपर ऐप्लिकेशन आईडी के हिसाब से ऐक्सेस टोकन रद्द करने के लिए, अपनी नीति में <AppId> एलिमेंट का इस्तेमाल करें.

नीचे दिए गए उदाहरण में, app_id नाम के क्वेरी पैरामीटर में, ऐक्सेस टोकन का डेवलपर ऐप्लिकेशन आईडी मिलने की उम्मीद है:

<RevokeOAuthV2 continueOnError="false" enabled="true" name="MyRevokeTokenPolicy">
  <DisplayName>Revoke OAuth v2.0-1</DisplayName>
  <AppId ref="request.queryparam.app_id"></AppId>
</RevokeOAuthV2>

डेवलपर ऐप्लिकेशन का आईडी मिलने पर, नीति ऐक्सेस टोकन रद्द कर देती है.

टाइमस्टैंप से पहले रद्द करना

किसी खास तारीख और समय से पहले जनरेट किए गए ऐक्सेस टोकन को डेवलपर ऐप्लिकेशन आईडी के हिसाब से रद्द करने के लिए, अपनी नीति में <RevokeBeforeTimestamp> एलिमेंट का इस्तेमाल करें. <RevokeBeforeTimestamp> में, मिलीसेकंड में यूटीसी epoch समय की जानकारी दी जाती है. उस समय से पहले जारी किए गए सभी टोकन रद्द कर दिए जाते हैं.

नीचे दिए गए उदाहरण में, 1 जुलाई, 2019 से पहले बनाए गए डेवलपर ऐप्लिकेशन के ऐक्सेस टोकन रद्द किए गए हैं:

<RevokeOAuthV2 continueOnError="false" enabled="true" name="MyRevokeTokenPolicy">
  <DisplayName>Revoke OAuth v2.0-1</DisplayName>
  <AppId ref="request.queryparam.app_id"></AppId>
  <RevokeBeforeTimestamp>1561939200000</RevokeBeforeTimestamp>
</RevokeOAuthV2>

<RevokeBeforeTimestamp> एलिमेंट, 64-बिट (लॉन्ग) इंटिजर लेता है. यह 1 जनवरी, 1970 को यूटीसी के हिसाब से आधी रात के बाद से बीते हुए मिलीसेसेकंड की संख्या दिखाता है.


एलिमेंट की जानकारी

एलिमेंट की जानकारी में, RevokeOAuthV2 नीति के एलिमेंट और एट्रिब्यूट के बारे में बताया गया है.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RevokeOAuthV2 continueOnError="false" enabled="true" name="GetOAuthV2Info-1">
  <DisplayName>Get OAuth v2.0 Info 1</DisplayName>
  <AppId ref="variable"></AppId>
  <EndUserId ref="variable"></EndUserId>
  <RevokeBeforeTimestamp ref="variable"></RevokeBeforeTimestamp>
  <Cascade>false</Cascade>
</RevokeOAuthV2>

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

<RevokeOAuthV2 continueOnError="false" enabled="true" name="Revoke-OAuth-v20-1">

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

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

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

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

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

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

नीति के काम न करने पर भी, फ़्लो के एक्ज़ीक्यूशन को जारी रखने के लिए, इसे true पर सेट करें.

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

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

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

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

यह एट्रिब्यूट बंद कर दिया गया है.

गलत बहिष्कृत

<DisplayName> एलिमेंट

मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) के प्रॉक्सी एडिटर में नीति को किसी दूसरे नाम से लेबल करने के लिए, name एट्रिब्यूट के अलावा इसका इस्तेमाल करें.

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

लागू नहीं

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

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

<AppId> एलिमेंट

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

<AppId>appIdString</AppId>

or:

<AppId ref="request.queryparam.app_id"></AppId>
डिफ़ॉल्ट

request.formparam.app_id (x-www-form-urlencoded और अनुरोध के मुख्य हिस्से में तय किया गया)

मौजूदगी

वैकल्पिक

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

कोई फ़्लो वैरिएबल जिसमें ऐप्लिकेशन आईडी स्ट्रिंग हो या कोई लिटरल स्ट्रिंग.

<Cascade> एलिमेंट

अगर true है और आपके पास पारंपरिक ओपेक ऐक्सेस टोकन है, तो रीफ़्रेश टोकन और ऐक्सेस टोकन, दोनों रद्द कर दिए जाएंगे, अगर <AppId> या <EndUserId> में से कोई एक मैच करता है. अगर false, है, तो सिर्फ़ ऐक्सेस टोकन रद्द किया जाएगा और रीफ़्रेश टोकन में कोई बदलाव नहीं होगा. ओपेक ऐक्सेस टोकन के लिए भी यही तरीका लागू होता है.

<Cascade>false<Cascade>
डिफ़ॉल्ट

गलत

मौजूदगी

वैकल्पिक

टाइप बूलियन
मान्य वैल्यू true या false

<EndUserId> एलिमेंट

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

<EndUserId>userIdString</EndUserId>

or:

<EndUserId ref="request.queryparam.access_token"></EndUserId>
डिफ़ॉल्ट

request.formparam.enduser_id (x-www-form-urlencoded और अनुरोध के मुख्य हिस्से में तय किया गया)

मौजूदगी

वैकल्पिक

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

कोई फ़्लो वैरिएबल जिसमें उपयोगकर्ता आईडी स्ट्रिंग हो या कोई लिटरल स्ट्रिंग.

<RevokeBeforeTimestamp> एलिमेंट

उस टाइमस्टैंप से पहले जारी किए गए टोकन रद्द करें. यह एलिमेंट, <AppId> और <EndUserId> के साथ काम करता है, ताकि किसी खास समय से पहले टोकन रद्द किए जा सकें. डिफ़ॉल्ट वैल्यू, नीति के लागू होने का समय होती है.

<RevokeBeforeTimestamp>timeStampString</RevokeBeforeTimestamp>

or:

<RevokeBeforeTimestamp ref="request.queryparam.revoke_since_timestamp"></RevokeBeforeTimestamp>
डिफ़ॉल्ट

वह टाइमस्टैंप जिस पर नीति लागू की जाती है.

मौजूदगी

वैकल्पिक

टाइप 64-बिट (लॉन्ग) इंटिजर. यह 1 जनवरी, 1970 को यूटीसी के हिसाब से आधी रात के बाद से बीते हुए मिलीसेकंड की संख्या दिखाता है.
मान्य वैल्यू

कोई फ़्लो वैरिएबल जिसमें टाइमस्टैंप हो या कोई लिटरल टाइमस्टैंप. टाइमस्टैंप, आने वाले समय का नहीं हो सकता और यह 1 जनवरी, 2014 से पहले का नहीं हो सकता.

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

RevokeOAuthV2 नीति, फ़्लो वैरिएबल सेट नहीं करती.

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

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

रनटाइम से जुड़ी गड़बड़ियां

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

गड़बड़ी का कोड एचटीटीपी कोड स्थिति वजह
steps.oauth.v2.InvalidFutureTimestamp 500 टाइमस्टैंप, आने वाले समय का नहीं हो सकता.
steps.oauth.v2.InvalidEarlyTimestamp 500 टाइमस्टैंप, 1 जनवरी, 2014 से पहले का नहीं हो सकता.
steps.oauth.v2.InvalidTimestamp 500 टाइमस्टैंप अमान्य है.
steps.oauth.v2.EmptyAppAndEndUserId 500 AppdId और EndUserId, दोनों खाली नहीं हो सकते.

डिप्लॉयमेंट से जुड़ी गड़बड़ियां

डिप्लॉयमेंट से जुड़ी गड़बड़ियों के बारे में जानकारी पाने के लिए, यूज़र इंटरफ़ेस (यूआई) में रिपोर्ट किया गया मैसेज देखें.

गड़बड़ी वाले वैरिएबल

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

वैरिएबल कहां उदाहरण
fault.name="fault_name" fault_name गड़बड़ी का नाम है. यह नाम, ऊपर दी गई रनटाइम से जुड़ी गड़बड़ियों की टेबल में दिया गया है. गड़बड़ी का नाम, गड़बड़ी के कोड का आखिरी हिस्सा होता है. fault.name Matches "IPDeniedAccess"
oauthV2.policy_name.failed policy_name, नीति का वह नाम है जिसे उपयोगकर्ता ने तय किया है और जिसकी वजह से गड़बड़ी हुई है. oauthV2.GetTokenInfo.failed = true
oauthV2.policy_name.fault.name policy_name, नीति का वह नाम है जिसे उपयोगकर्ता ने तय किया है और जिसकी वजह से गड़बड़ी हुई है. oauthV2.GetToKenInfo.fault.name = invalid_client-invalid_client_id
oauthV2.policy_name.fault.cause policy_name, नीति का वह नाम है जिसे उपयोगकर्ता ने तय किया है और जिसकी वजह से गड़बड़ी हुई है. oauthV2.GetTokenInfo.cause = ClientID is Invalid

गड़बड़ी वाले जवाब का उदाहरण

{
   "fault":{
      "faultstring":"Timestamp is in the future.",
      "detail":{
         "errorcode":"steps.oauth.v2.InvalidFutureTimestamp"
      }
   }
}

गड़बड़ी के नियम का उदाहरण

<FaultRule name="RevokeOAuthV2 Faults">
    <Step>
        <Name>AM-InvalidTimestamp</Name>
    </Step>
    <Condition>(fault.name = "InvalidFutureTimestamp")</Condition>
</FaultRule>

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