خط مشی 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>

با دریافت توکن دسترسی، این سیاست به دنبال پروفایل توکن می‌گردد و مجموعه‌ای از متغیرها را با داده‌های پروفایل پر می‌کند.

سپس می‌توانید با استفاده از جاوا اسکریپت یا روش‌های دیگر به متغیرها دسترسی پیدا کنید. مثال زیر دامنه(های) مرتبط با توکن دسترسی را با استفاده از جاوا اسکریپت بازیابی می‌کند:

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

توجه داشته باشید که برای دسترسی به آن متغیرها در کد، باید آنها را با پیشوند "oauthv2accesstoken" فراخوانی کنید. برای مشاهده لیست کاملی از متغیرهای موجود از طریق access token، به Access token variables مراجعه کنید.

کد تایید

برای دریافت ویژگی‌های کد مجوز، از عنصر <AuthorizationCode> در سیاست خود استفاده کنید.

مثال زیر انتظار دارد توکن دسترسی را در پارامتر فرمی به نام "code" پیدا کند (جزئیات پیاده‌سازی واقعی به شما بستگی دارد):

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

با دریافت کد تایید، این خط‌مشی اطلاعات کد را جستجو کرده و مجموعه‌ای از متغیرها را با داده‌های کد تایید پر می‌کند.

سپس می‌توانید با استفاده از جاوا اسکریپت یا روش‌های دیگر به متغیرها دسترسی پیدا کنید. مثال زیر یک ویژگی سفارشی مرتبط با کد مجوز را با استفاده از جاوا اسکریپت بازیابی می‌کند:

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

توجه داشته باشید که برای دسترسی به آن متغیرها در کد، باید آنها را با پیشوند "oauthv2authcode" فراخوانی کنید. برای مشاهده لیست کاملی از متغیرهای موجود از طریق کد احراز هویت، به بخش متغیرهای کد احراز هویت مراجعه کنید.

توکن تازه‌سازی

برای دریافت ویژگی‌های توکن تازه‌سازی، از عنصر <RefreshToken> در سیاست خود استفاده کنید.

مثال زیر انتظار دارد توکن دسترسی را در یک پارامتر پرس‌وجو با نام "refresh_token" پیدا کند (جزئیات پیاده‌سازی واقعی به شما بستگی دارد):

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

با دریافت توکن تازه‌سازی، این سیاست اطلاعات توکن تازه‌سازی را جستجو می‌کند و مجموعه‌ای از متغیرها را با داده‌های توکن تازه‌سازی پر می‌کند.

سپس می‌توانید با استفاده از جاوا اسکریپت یا روش‌های دیگر به آن متغیرها دسترسی پیدا کنید. مثال زیر یک ویژگی سفارشی مرتبط با توکن refresh را با استفاده از جاوا اسکریپت بازیابی می‌کند:

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

توجه داشته باشید که برای دسترسی به متغیرها در کد، باید آنها را با پیشوند "oauthv2refreshtoken" مشخص کنید. برای مشاهده لیست کاملی از متغیرهای موجود از طریق refresh token، به Refresh token variables مراجعه کنید.

استاتیک

در برخی موارد نادر، ممکن است نیاز داشته باشید مشخصات یک توکن پیکربندی‌شده‌ی ایستا (توکنی که از طریق یک متغیر قابل دسترسی نیست) را دریافت کنید. می‌توانید این کار را با ارائه‌ی مقدار توکن دسترسی به عنوان یک عنصر انجام دهید.

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

شما می‌توانید این کار را با سایر انواع توکن‌ها (شناسه کلاینت، کد مجوز و توکن‌های به‌روزرسانی) نیز انجام دهید.

شناسه مشتری

این مثال نحوه بازیابی اطلاعات مربوط به برنامه کلاینت را با استفاده از شناسه کلاینت نشان می‌دهد. پس از اجرا، این سیاست مجموعه‌ای از متغیرها را با اطلاعات کلاینت پر می‌کند. در این حالت، این سیاست انتظار دارد شناسه کلاینت را در یک پارامتر پرس‌وجو به نام client_id پیدا کند. با دریافت شناسه کلاینت، این سیاست به دنبال پروفایل کلاینت می‌گردد و مجموعه‌ای از متغیرها را با داده‌های پروفایل پر می‌کند. متغیرها با پیشوند oauthv2client.

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

سپس می‌توانید با استفاده از جاوا اسکریپت یا روش‌های دیگر به متغیرها دسترسی پیدا کنید. برای مثال، برای دریافت نام برنامه توسعه‌دهنده و ایمیل توسعه‌دهنده مرتبط با برنامه کلاینت با استفاده از جاوا اسکریپت:

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

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

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

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

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

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

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

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

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

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

عنصر <DisplayName>

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

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

N/A

اگر این عنصر را حذف کنید، از مقدار ویژگی name خط مشی استفاده می شود.

حضور اختیاری
تایپ کنید رشته

عنصر <AccessToken>

نمایه یک توکن دسترسی را بازیابی می‌کند. شما می‌توانید یک متغیر که حاوی رشته توکن دسترسی است یا یک رشته توکن تحت‌اللفظی (در موارد نادر) را به آن ارسال کنید. در این مثال، توکن دسترسی از یک پارامتر پرس‌وجو که در یک درخواست ارسال شده است، بازیابی می‌شود. اگر می‌خواهید اطلاعات یک توکن لغو شده یا منقضی شده را برگردانید، از عنصر <IgnoreAccessTokenStatus> استفاده کنید.

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

پیش‌فرض:

request.formparam.access_token (یک x-www-form-urlencoded و مشخص شده در بدنه درخواست)

حضور:

اختیاری

نوع: رشته
مقادیر معتبر:

یا یک متغیر جریان حاوی یک رشته توکن دسترسی، یا یک رشته تحت‌اللفظی.


عنصر <AuthorizationCode>

نمایه یک کد مجوز را بازیابی می‌کند. شما می‌توانید یک متغیر حاوی رشته کد مجوز یا یک رشته توکن تحت‌اللفظی (در موارد نادر) را ارسال کنید. در این مثال، کد مجوز از یک پارامتر پرس‌وجو که در یک درخواست ارسال شده است، بازیابی می‌شود. برای فهرستی از متغیرهایی که توسط این عملیات پر می‌شوند، به « متغیرهای جریان » مراجعه کنید.

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

پیش‌فرض:

request.formparam.access_token (یک x-www-form-urlencoded و مشخص شده در بدنه درخواست)

حضور:

اختیاری

نوع: رشته
مقادیر معتبر:

یا یک متغیر جریان حاوی رشته کد احراز هویت، یا یک رشته تحت‌اللفظی.

عنصر <ClientId>

اطلاعات مربوط به شناسه‌ی کلاینت را بازیابی می‌کند. در این مثال، شناسه‌ی کلاینت از یک پارامتر پرس‌وجو که در یک درخواست ارسال شده است، بازیابی می‌شود. برای فهرستی از متغیرهایی که توسط این عملیات پر می‌شوند، به « متغیرهای جریان » مراجعه کنید.

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

پیش‌فرض:

request.formparam.access_token (یک x-www-form-urlencoded و مشخص شده در بدنه درخواست)

حضور:

اختیاری

نوع: رشته
مقادیر معتبر: یا یک متغیر جریان حاوی رشته کد احراز هویت، یا یک رشته تحت‌اللفظی.

عنصر <نادیده گرفتن وضعیت توکن دسترسی>

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

<IgnoreAccessTokenStatus>true</IgnoreAccessTokenStatus>

پیش‌فرض:

نادرست

حضور:

اختیاری

نوع: بولی
مقادیر معتبر: درست یا غلط

عنصر <RefreshToken>

نمایه مربوط به یک توکن به‌روزرسانی را بازیابی می‌کند. شما می‌توانید یک متغیر که حاوی رشته توکن به‌روزرسانی است یا یک رشته توکن تحت‌اللفظی (در موارد نادر) را ارسال کنید. در این مثال، توکن به‌روزرسانی از یک پارامتر پرس‌وجو که در یک درخواست ارسال شده است، بازیابی می‌شود. برای فهرستی از متغیرهایی که توسط این عملیات پر می‌شوند، به « متغیرهای جریان » مراجعه کنید.

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

پیش‌فرض:

request.formparam.access_token (یک x-www-form-urlencoded و مشخص شده در بدنه درخواست)

حضور:

اختیاری

نوع: رشته
مقادیر معتبر:

یا یک متغیر جریان حاوی یک رشته توکن refresh، یا یک رشته تحت‌اللفظی.

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

خط‌مشی 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

طرحواره

هر نوع سیاست توسط یک طرح XML ( .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>

مباحث مرتبط