आपको 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 |
नीति का अंदरूनी नाम. इसके अलावा, नीति को लेबल करने के लिए, |
लागू नहीं | ज़रूरी है |
continueOnError |
किसी नीति के काम न करने पर, गड़बड़ी दिखाने के लिए नीति के लागू होने के बाद भी फ़्लो को एक्ज़ीक्यूट करने के लिए, इसे |
गलत | वैकल्पिक |
enabled |
नीति को लागू करने के लिए, नीति को बंद करने के लिए, |
सही | वैकल्पिक |
async |
यह एट्रिब्यूट अब काम नहीं करता. |
गलत | बहिष्कृत |
<DisplayName> एलिमेंट
इस कॉलम में नीति को लेबल करने के लिए, name एट्रिब्यूट के साथ-साथ इस्तेमाल करें
मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) प्रॉक्सी एडिटर, जिसका नाम अलग और सामान्य भाषा में है.
<DisplayName>Policy Display Name</DisplayName>
| डिफ़ॉल्ट |
लागू नहीं अगर आप इस एलिमेंट को छोड़ देते हैं, तो नीति की |
|---|---|
| मौजूदगी | वैकल्पिक |
| टाइप | स्ट्रिंग |
<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 पर उपलब्ध हैं.
गड़बड़ी की जानकारी
इस सेक्शन में, गड़बड़ी के कोड और गड़बड़ी के मैसेज के बारे में बताया गया है. साथ ही, इन गड़बड़ियों के वैरिएबल के बारे में भी बताया गया है, जो Edge की मदद से सेट किए जाते हैं. यह जानकारी जानना ज़रूरी है कि क्या आप गड़बड़ियों को ठीक करता है. ज़्यादा जानने के लिए, आपके लिए ज़रूरी जानकारी देखें नीति से जुड़ी गड़बड़ियों और हैंडलिंग के बारे में जानकारी गलतियां.
रनटाइम की गड़बड़ियां
नीति के लागू होने पर ये गड़बड़ियां हो सकती हैं. नीचे दिखाए गए गड़बड़ी के नाम स्ट्रिंग हैं
जिन्हें कोई गड़बड़ी होने पर fault.name वैरिएबल को असाइन किया जाता है. गलती देखें
'वैरिएबल' सेक्शन में जाएं.
| गड़बड़ी कोड | एचटीटीपी कोड स्थिति | वजह |
|---|---|---|
steps.oauth.v2.access_token_expired |
500 | नीति को भेजे गए ऐक्सेस टोकन की समयसीमा खत्म हो गई है. |
steps.oauth.v2.authorization_code_expired |
500 | नीति को भेजे गए ऑथराइज़ेशन कोड की समयसीमा खत्म हो गई है. |
steps.oauth.v2.invalid_access_token |
500 | नीति को भेजा गया ऐक्सेस टोकन अमान्य है. |
steps.oauth.v2.invalid_client-invalid_client_id |
500 | नीति को भेजा गया क्लाइंट आईडी अमान्य है. |
steps.oauth.v2.invalid_refresh_token |
500 | नीति को भेजा गया रीफ़्रेश टोकन अमान्य है. |
steps.oauth.v2.invalid_request-authorization_code_invalid |
500 | नीति को भेजा गया ऑथराइज़ेशन कोड अमान्य है. |
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound |
401 | कृपया देखें यह Apigee कम्यूनिटी पोस्ट पढ़ें. |
steps.oauth.v2.refresh_token_expired |
500 | नीति को भेजे गए रीफ़्रेश टोकन की समयसीमा खत्म हो गई है. |
डिप्लॉयमेंट से जुड़ी गड़बड़ियां
डिप्लॉयमेंट की गड़बड़ियों के बारे में जानकारी के लिए, यूज़र इंटरफ़ेस (यूआई) में रिपोर्ट किया गया मैसेज देखें.
गड़बड़ी के वैरिएबल
ये वैरिएबल तब सेट किए जाते हैं, जब यह नीति रनटाइम के दौरान कोई गड़बड़ी ट्रिगर करती है.
| वैरिएबल | कहां | उदाहरण |
|---|---|---|
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":"ClientId is Invalid", "detail":{ "errorcode":"keymanagement.service.invalid_client-invalid_client_id" } } }
गड़बड़ी के नियम का उदाहरण
<FaultRule name="OAuthV2 Faults">
<Step>
<Name>AM-InvalidClientIdResponse</Name>
</Step>
<Condition>(fault.name = "invalid_client-invalid_client_id")</Condition>
</FaultRule>