درحال مشاهده اسناد Apigee Edge هستید.
به
اسناد Apigee X بروید. اطلاعات
نمای کلی
کدهای دسترسی OAuth2 مرتبط با شناسه برنامه توسعهدهنده یا شناسه کاربر نهایی برنامه، یا هر دو را فسخ میکند.
از خطمشی OAuthv2 برای تولید کد دسترسی OAuth 2.0 استفاده کنید. یک کد تولیدشده توسط 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 شناسه کاربر نهایی را در کد قرار نمیدهد. میتوانید Apigee را پیکربندی کنید تا با افزودن عنصر <AppEndUser> به خطمشی OAuthv2،
شناسه کاربر نهایی را اضافه کند:
<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 مرتبط با شناسه برنامه توسعهدهنده را باطل کنید. همه نمودارهای دسترسی OAuth2 تولیدشده توسط Apigee شامل شناسه برنامه توسعهدهنده مرتبط با نمودار است. سپس میتوانید براساس آن شناسه برنامه، نشانها را باطل کنید.
برای دریافت فهرست شناسههای برنامه برای یک توسعهدهنده خاص، از میانای برنامهسازی کاربردی برنامههای توسعهدهنده استفاده کنید.
همچنین میتوانید از میانای برنامهسازی کاربردی برنامههای توسعهدهنده برای دریافت جزئیات درباره برنامه استفاده کنید.
لغو کردن براساس شناسه کاربر نهایی برنامه
کدهای دسترسی OAuth2 مرتبط با شناسه کاربر نهایی برنامه خاصی را باطل کنید. این کد مرتبط با شناسه کاربری است که کدها برای او صادر شده است.
بهطور پیشفرض، هیچ فیلدی برای شناسه کاربر نهایی در کد دسترسی OAuth وجود ندارد. برای فعال کردن ابطال ژتونهای دسترسی OAuth 2.0 براساس شناسه کاربر نهایی، باید خطمشی OAuthv2 را بهگونهای پیکربندی کنید که شناسه کاربر در ژتون گنجانده شود، همانطور که در بالا نشان داده شده است.
برای دریافت شناسه کاربر نهایی برنامه، از میانای برنامهسازی کاربردی برنامههای توسعهدهنده استفاده کنید.
نمونهها
نمونههای زیر از خطمشی «لغو OAuth V2» برای لغو کدهای دسترسی OAuth2 استفاده میکنند.
شناسه برنامه توسعهدهنده
برای فسخ کردن کدهای دسترسی براساس شناسه برنامه توسعهدهنده، از عنصر <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>
زمان تاریخ یونیکس را در ساعت هماهنگ جهانی به میلیثانیه مشخص میکند. همه نشانهای صادرشده قبلاز آن زمان باطل میشوند.
مثال زیر کدهای دسترسی را برای برنامه توسعهدهندهای که قبلاز ۱ ژوئیه ۲۰۱۹ ایجاد شده است فسخ میکند:
<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> عدد صحیح ۶۴ بیتی (طولانی) را میگیرد که نشاندهنده
تعداد میلیثانیههای سپریشده از نیمهشب ۱ ژانویه ۱۹۷۰ به زمان هماهنگ جهانی است.
مرجع عنصر
مرجع عنصر عناصر و مشخصههای خطمشی 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 |
نام داخلی خطمشی. مقدار مشخصه بهصورت اختیاری، از عنصر |
موجود نیست | الزامی |
continueOnError |
برای برگرداندن خطا درصورت ناموفق بودن خطمشی، روی روی |
نادرست | اختیاری |
enabled |
برای اجرای خطمشی، روی برای خاموش کردن خطمشی، روی |
درست | اختیاری |
async |
این مشخصه منسوخ شده است. |
نادرست | منسوخ |
عنصر <DisplayName>
علاوهبر name از آن استفاده کنید تا خطمشی را در
ویرایشگر کارگزار واسط کاربر مدیریت با نامی متفاوت و به زبان طبیعی برچسبگذاری کنید.
<DisplayName>Policy Display Name</DisplayName>
| پیشفرض |
موجود نیست اگر این عنصر را حذف کنید، از مقدار مشخصه |
|---|---|
| حضور | اختیاری |
| نوع | رشته |
عنصر <AppId>
شناسه برنامه توسعهدهنده نشانکهایی را که باید باطل شوند مشخص میکند. متغیری را که حاوی شناسه برنامه است یا شناسه برنامه حرفی را ارسال کنید.
<AppId>appIdString</AppId> or: <AppId ref="request.queryparam.app_id"></AppId>
| پیشفرض |
|
|---|---|
| حضور |
اختیاری |
| نوع | رشته |
| مقادیر معتبر |
یا متغیر جاریسازی حاوی رشته شناسه برنامه، یا رشته حرفی. |
عنصر <Cascade>
اگر true و شما کد دسترسی مبهم سنتی دارید، درصورتیکه <AppId> یا <EndUserId> مطابقت داشته باشند، هم کد
بازآوری و هم کد دسترسی باطل خواهند شد.
اگر false،
فقط کد دسترسی باطل میشود و کد بازآوری تغییر نمیکند. همین رفتار فقط برای
رمزهای دسترسی غیرشفاف اعمال میشود.
<Cascade>false<Cascade>
| پیشفرض |
نادرست |
|---|---|
| حضور |
اختیاری |
| نوع | بولی |
| مقادیر معتبر | true یا false |
عنصر <EndUserId>
شناسه کاربر نهایی برنامه را برای لغو کردن نشان میدهد. متغیری را که حاوی شناسه کاربر است یا رشته نشانه حرفی را بگذرانید.
<EndUserId>userIdString</EndUserId> or: <EndUserId ref="request.queryparam.access_token"></EndUserId>
| پیشفرض |
|
|---|---|
| حضور |
اختیاری |
| نوع | رشته |
| مقادیر معتبر |
یا متغیر جریانی که حاوی رشته شناسه کاربر است، یا رشتهای تحتاللفظی. |
عنصر <RevokeBeforeTimestamp>
کدهای صادرشده قبلاز مُهر زمان را باطل کنید. این عنصر با <AppId>
و <EndUserId> کار میکند تا به شما امکان دهد نشانها را قبلاز زمان مشخصی باطل کنید.
مقدار پیشفرض زمانی است که خطمشی اجرا میشود.
<RevokeBeforeTimestamp>timeStampString</RevokeBeforeTimestamp> or: <RevokeBeforeTimestamp ref="request.queryparam.revoke_since_timestamp"></RevokeBeforeTimestamp>
| پیشفرض |
مُهر زمان اجرای خطمشی. |
|---|---|
| حضور |
اختیاری |
| نوع | عدد صحیح ۶۴ بیتی (طولانی) که نشاندهنده تعداد میلیثانیههای سپریشده از نیمهشب ۱ ژانویه ۱۹۷۰ به وقت «ساعت هماهنگ جهانی» است. |
| مقادیر معتبر |
یا متغیر جریانی حاوی مُهر زمان، یا مُهر زمان حرفی. مهر زمان نمیتواند در آینده باشد و نمیتواند قبلاز ۱ ژانویه ۲۰۱۴ باشد. |
متغیرهای جریان
خطمشی RevokeOAuthV2 متغیرهای جریان را تنظیم نمیکند.
مرجع خطا
این بخش کدهای خطا و پیامهای خطایی را که برگردانده میشوند و متغیرهای خطایی را که Edge هنگام راهاندازی خطا در این خطمشی تنظیم میکند شرح میدهد. این اطلاعات برای دانستن اینکه آیا قوانین خطا را برای مدیریت خطاها توسعه میدهید یا نه مهم است. برای کسب اطلاعات بیشتر، آنچه باید درباره خطاهای خطمشی بدانیدو رسیدگی به اشکالات را ببینید.
خطاهای زمان اجرا
این خطاها ممکن است هنگام اجرای خطمشی رخ دهند. نامهای خطای نشاندادهشده در زیر رشتههایی هستند که وقتی خطایی رخ میدهد به متغیر fault.name اختصاص داده میشوند. برای جزئیات بیشتر، بخش متغیرهای «خطا»
در زیر را ببینید.
| کد خطا | وضعیت HTTP | علت |
|---|---|---|
steps.oauth.v2.InvalidFutureTimestamp |
۵۰۰ | مُهر زمان نمیتواند در آینده باشد. |
steps.oauth.v2.InvalidEarlyTimestamp |
۵۰۰ | مُهر زمان نمیتواند قبلاز ۱ ژانویه ۲۰۱۴ باشد. |
steps.oauth.v2.InvalidTimestamp |
۵۰۰ | مُهر زمان نامعتبر است. |
steps.oauth.v2.EmptyAppAndEndUserId |
۵۰۰ | هم 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>