خط‌مشی GetOAuthV2Info

درحال مشاهده اسناد Apigee Edge هستید.
به اسناد Apigee X بروید.
اطلاعات

چه

مشخصه‌های کدهای دسترسی، کدهای بازآوری، کدهای مجوز، و مشخصه‌های برنامه کارخواه را دریافت می‌کند و متغیرها را با مقادیر آن مشخصه‌ها تکمیل می‌کند.

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

رمز دسترسی که به این خط‌مشی ارسال می‌کنید باید معتبر باشد، درغیراین‌صورت خط‌مشی خطای invalid_access_token را برمی‌گرداند.

نمونه‌ها

نمونه‌های زیر از خط‌مشی «دریافت اطلاعات OAuth V2» برای بازیابی اطلاعات درباره عناصر مختلف گردش کار OAuth2 و سپس دسترسی به آن اطلاعات در کد استفاده می‌کنند.

کد دسترسی

برای دریافت مرجع به کد دسترسی، از عنصر <AccessToken> در خط‌مشی‌تان استفاده کنید.

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

<GetOAuthV2Info name="MyTokenAttrsPolicy">
  <AccessToken ref="request.queryparam.access_token"></AccessToken>
</GetOAuthV2Info>

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

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

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

توجه داشته باشید که برای دسترسی به آن متغیرها در کد، باید پیشوند «oauthv2accesstoken» را به آن‌ها اضافه کنید. برای مشاهده فهرست کامل متغیرهای دردسترس ازطریق کد دسترسی، متغیرهای کد دسترسی را ببینید.

کد اصالت‌سنجی

برای دریافت مشخصه‌های کد مجوز، از عنصر <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>

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

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

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

توجه داشته باشید که برای دسترسی به متغیرها در کد، باید آن‌ها را با «oauthv2refreshtoken» پیشوندگذاری کنید. برای مشاهده فهرست کامل متغیرهای دردسترس ازطریق کد بازآوری، به متغیرهای کد بازآوری مراجعه کنید.

ثابت

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

<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>

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

<IgnoreAccessTokenStatus>true</IgnoreAccessTokenStatus>

پیش‌فرض:

نادرست

حضور:

اختیاری

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

عنصر <RefreshToken>

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

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

پیش‌فرض:

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

حضور:

اختیاری

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

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

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

خط‌مشی 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 دردسترس است.

مرجع خطا

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

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

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

کد خطا وضعیت HTTP علت
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 رمز به‌روزرسانی ارسال شده به خط‌مشی منقضی شده است.

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

برای اطلاعات در مورد خطاهای استقرار به پیام گزارش شده در 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":"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>

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