سیاست OAuth V2 را لغو کنید

شما در حال مشاهده اسناد 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 شناسه کاربر نهایی را در توکن لحاظ نمی کند. می‌توانید با افزودن عنصر <AppEndUser> به خط‌مشی OAuthv2 ، 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 مرتبط با شناسه برنامه توسعه‌دهنده را لغو کنید. همه توکن‌های دسترسی OAuth2 تولید شده توسط Apigee شامل شناسه برنامه توسعه‌دهنده مرتبط با توکن هستند. سپس می‌توانید توکن‌ها را بر اساس شناسه برنامه لغو کنید.

  • از Developer apps API برای دریافت لیستی از شناسه های برنامه برای یک توسعه دهنده خاص استفاده کنید.

  • همچنین می‌توانید از Developer apps API برای دریافت جزئیات یک برنامه استفاده کنید.

لغو با شناسه کاربر نهایی برنامه

رمزهای دسترسی OAuth2 مرتبط با شناسه کاربر نهایی برنامه خاص را لغو کنید. این رمز مربوط به شناسه کاربری است که توکن ها برای او صادر شده است.

به طور پیش فرض، هیچ فیلدی برای شناسه کاربر نهایی در نشانه دسترسی OAuth وجود ندارد. برای فعال کردن لغو نشانه‌های دسترسی OAuth 2.0 توسط شناسه کاربر نهایی، باید خط‌مشی OAuthv2 را طوری پیکربندی کنید که شناسه کاربر در توکن گنجانده شود، همانطور که در بالا نشان داده شده است.

برای دریافت شناسه کاربر نهایی برنامه، از Developer apps API استفاده کنید.

نمونه ها

نمونه‌های زیر از خط‌مشی Revoke 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> زمان دوره UTC را بر حسب میلی ثانیه مشخص می کند. تمام توکن های صادر شده قبل از آن زمان باطل می شوند.

مثال زیر نشانه‌های دسترسی یک برنامه توسعه‌دهنده ایجاد شده قبل از ۱ ژوئیه ۲۰۱۹ را لغو می‌کند:

<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 UTC است.


مرجع عنصر

مرجع عنصر عناصر و ویژگی های خط مشی 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> برای برچسب گذاری خط مشی در ویرایشگر پروکسی UI مدیریت با نامی به زبان طبیعی دیگر استفاده کنید.

N/A مورد نیاز
continueOnError

برای بازگرداندن خطا در صورت شکست خط مشی، روی false تنظیم کنید. این رفتار مورد انتظار برای اکثر سیاست ها است.

روی true تنظیم کنید تا اجرای جریان حتی پس از شکست خط مشی ادامه یابد.

نادرست اختیاری
enabled

برای اجرای خط مشی روی true تنظیم کنید.

برای خاموش کردن خط مشی، روی false تنظیم کنید. این سیاست حتی اگر به یک جریان وابسته باشد اجرا نخواهد شد.

درست است اختیاری
async

این ویژگی منسوخ شده است.

نادرست منسوخ شده است

عنصر <DisplayName>

علاوه بر ویژگی name برای برچسب‌گذاری خط‌مشی در ویرایشگر پروکسی رابط کاربری مدیریت با نامی متفاوت و به زبان طبیعی، از آن استفاده کنید.

<DisplayName>Policy Display Name</DisplayName>
پیش فرض

N/A

اگر این عنصر را حذف کنید، از مقدار ویژگی 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 UTC.
مقادیر معتبر

یا یک متغیر جریان حاوی یک مهر زمانی یا یک مهر زمانی تحت اللفظی. مهر زمانی نمی تواند در آینده باشد و نمی تواند قبل از 1 ژانویه 2014 باشد.

متغیرهای جریان

خط مشی RevokeOAuthV2 متغیرهای جریان را تنظیم نمی کند.

مرجع خطا

این بخش کدهای خطا و پیام‌های خطایی را که برگردانده می‌شوند و متغیرهای خطا را که توسط Edge تنظیم می‌شوند، هنگامی که این خط‌مشی خطا را راه‌اندازی می‌کند، توضیح می‌دهد. این اطلاعات برای دانستن اینکه آیا در حال توسعه قوانین خطا برای رسیدگی به خطاها هستید، مهم است. برای کسب اطلاعات بیشتر، آنچه را که باید در مورد خطاهای خط مشی و مدیریت خطاها بدانید را ببینید.

خطاهای زمان اجرا

این خطاها ممکن است هنگام اجرای سیاست رخ دهند. نام خطاهای نشان داده شده در زیر رشته هایی هستند که در صورت بروز خطا به متغیر fault.name اختصاص داده می شوند. برای جزئیات بیشتر به بخش متغیرهای خطا در زیر مراجعه کنید.

کد خطا وضعیت HTTP علت
steps.oauth.v2.InvalidFutureTimestamp 500 مهر زمانی نمی تواند در آینده باشد.
steps.oauth.v2.InvalidEarlyTimestamp 500 مهر زمانی نمی تواند زودتر از 1 ژانویه 2014 باشد.
steps.oauth.v2.InvalidTimestamp 500 مهر زمانی نامعتبر است.
steps.oauth.v2.EmptyAppAndEndUserId 500 هر دو AppdId و EndUserId نمی توانند خالی باشند.

خطاهای استقرار

برای اطلاعات در مورد خطاهای استقرار به پیام گزارش شده در UI مراجعه کنید.

متغیرهای خطا

این متغیرها زمانی تنظیم می شوند که این خط مشی خطایی را در زمان اجرا ایجاد کند.

متغیرها کجا مثال
fault.name=" fault_name " fault_name نام خطا است، همانطور که در جدول خطاهای Runtime در بالا ذکر شده است. نام خطا آخرین قسمت کد خطا است. 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>

موضوعات مرتبط