خط مشی OAuthV2

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

چی

OAuthV2 یک سیاست چند وجهی برای انجام عملیات نوع کمک هزینه OAuth 2.0 است. این خط‌مشی اصلی است که برای پیکربندی نقاط پایانی OAuth 2.0 در Apigee Edge استفاده می‌شود.

نکته: اگر می‌خواهید درباره OAuth در Apigee Edge اطلاعات بیشتری کسب کنید، به صفحه اصلی OAuth مراجعه کنید. پیوندهایی به منابع، نمونه ها، ویدیوها و موارد دیگر ارائه می دهد. نمونه OAuth پیشرفته را در GitHub برای نشان دادن نحوه استفاده از این خط مشی در یک برنامه کاربردی مشاهده کنید.

نمونه ها

VerifyAccessToken

VerifyAccessToken

این پیکربندی خط مشی OAuthV2 (با عملیات VerifyAccessToken) تأیید می کند که یک نشانه دسترسی ارسال شده به Apigee Edge معتبر است. هنگامی که این عملیات خط مشی راه اندازی می شود، Edge به دنبال یک نشانه دسترسی معتبر در درخواست می گردد. اگر رمز دسترسی معتبر باشد، درخواست اجازه ادامه دارد. اگر نامعتبر باشد، تمام پردازش متوقف می شود و یک خطا در پاسخ باز می گردد.

<OAuthV2 async="false" continueOnError="false" enabled="true" name="OAuth-v20-2">
    <DisplayName>OAuth v2.0 2</DisplayName>
    <Operation>VerifyAccessToken</Operation>
    <AccessTokenPrefix>Bearer</AccessTokenPrefix> <!-- Optional, default is Bearer -->
</OAuthV2>

توجه: فقط توکن‌های حامل OAuth 2.0 پشتیبانی می‌شوند. کدهای احراز هویت پیام (MAC) پشتیبانی نمی شوند.

به عنوان مثال:

$ curl -H "Authorization: Bearer ylSkZIjbdWybfsUQe9BqP0LH5Z" http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282

به طور پیش‌فرض، Edge توکن‌های دسترسی را در هدر Authorization با پیشوند Bearer می‌پذیرد. می توانید این پیش فرض را با عنصر <AccessToken> تغییر دهید.

GenerateAccessToken

تولید نشانه های دسترسی

برای مثال‌هایی که نحوه درخواست نشانه‌های دسترسی را برای هر یک از انواع کمک‌های پشتیبانی شده نشان می‌دهند، به درخواست نشانه‌های دسترسی و کدهای مجوز مراجعه کنید. موضوع شامل نمونه هایی از این عملیات است:

GenerateAuthorizationCode

کد مجوز را ایجاد کنید

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

RefreshAccessToken

یک نشانه دسترسی را بازخوانی کنید

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

نشانه جریان پاسخ

یک نشانه دسترسی در جریان پاسخ ایجاد کنید

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

ابتدا، بیایید به سیاست نمونه نگاه کنیم:

<OAuthV2 enabled="true" continueOnError="false" async="false" name="generateAccessToken">
    <Operation>GenerateAccessToken</Operation>
    <AppEndUser>Doe</AppEndUser>
    <UserName>jdoe</UserName>
    <PassWord>jdoe</PassWord>
    <GrantType>grant_type</GrantType>
    <ClientId>a_valid_client_id</ClientId>
    <SupportedGrantTypes>
        <GrantType>password</GrantType>
    </SupportedGrantTypes>
</OAuthV2>

اگر این خط‌مشی را روی جریان پاسخ قرار دهید، با خطای 401 UnAuthorized با وجود اینکه پارامترهای ورود صحیح در خط‌مشی مشخص شده‌اند، با خطا مواجه می‌شود. برای حل این مشکل، باید یک هدر درخواست مجوز تنظیم کنید.

سرصفحه مجوز باید شامل یک طرح دسترسی پایه با Client_id:client_secret کدگذاری شده با Base64 باشد.

می‌توانید این هدر را با یک خط‌مشی جاوا اسکریپت که درست قبل از خط‌مشی OAuthV2 قرار داده شده است، اضافه کنید. متغیرهای "local_clientid" و "local_secret" باید قبلاً تنظیم شده و در جریان موجود باشند:

var client_id = context.getVariable("local_clientid");
var client_secret = context.getVariable("local_secret");
context.setVariable("request.header.Authorization","Basic "+CryptoJS.enc.Base64.stringify(CryptoJS.enc.Latin1
                                      .parse(client_id + ':' + client_secret)));

همچنین به " رمزگذاری اعتبارنامه های اصلی احراز هویت " مراجعه کنید.

مرجع عنصر

مرجع خط مشی عناصر و ویژگی های خط مشی OAuthV2 را توصیف می کند.

سیاست نمونه نشان داده شده در زیر یکی از بسیاری از تنظیمات ممکن است. این نمونه یک خط مشی OAuthV2 را نشان می دهد که برای عملیات GenerateAccessToken پیکربندی شده است. این شامل عناصر مورد نیاز و اختیاری است. برای جزئیات بیشتر به توضیحات عنصر در این بخش مراجعه کنید.

<OAuthV2 name="GenerateAccessToken">
  <!-- This policy generates an OAuth 2.0 access token using the client_credentials grant type -->
  <Operation>GenerateAccessToken</Operation>
  <!-- This is in millseconds, so expire in an hour -->
  <ExpiresIn>3600000</ExpiresIn>
  <SupportedGrantTypes>
    <GrantType>client_credentials</GrantType>
  </SupportedGrantTypes>
  <GrantType>request.queryparam.grant_type</GrantType>
  <GenerateResponse/>
</OAuthV2>

ویژگی های <OAuthV2>

<OAuthV2 async="false" continueOnError="false" enabled="true" name="MyOAuthPolicy">

جدول زیر ویژگی هایی را توصیف می کند که برای همه عناصر اصلی خط مشی مشترک هستند:

صفت توضیحات پیش فرض حضور
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>

<AccessToken>request.header.access_token</AccessToken>

به طور پیش فرض، VerifyAccessToken انتظار دارد که نشانه دسترسی در سربرگ Authorization ارسال شود. با استفاده از این عنصر می توانید آن پیش فرض را تغییر دهید. به عنوان مثال request.queryparam.access_token نشان می دهد که نشانه دسترسی باید به عنوان یک پارامتر پرس و جو به نام access_token وجود داشته باشد.

مثالی که در آن <AccessToken>request.header.access_token</AccessToken> مشخص شده است:

curl https://myorg-myenv.apigee.net/oauth2/validate -H "access_token:Rft3dqrs56Blirls56a"
مثالی که در آن <AccessToken>request.queryparam.access_token</AccessToken> مشخص شده است:

curl "https://myorg-myenv.apigee.net/oauth2/validate?access_token:Rft3dqrs56Blirls56a"

پیش فرض:

N/A

حضور:

اختیاری

نوع: رشته
مورد استفاده با عملیات:
  • VerifyAccessToken

عنصر <AccessTokenPrefix>

<AccessTokenPrefix>Bearer</AccessTokenPrefix>

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

-H "Authorization: Bearer Rft3dqrs56Blirls56a"

در حال حاضر، Bearer تنها پیشوند پشتیبانی شده است.

پیش فرض:

حامل

حضور:

اختیاری

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

حامل

مورد استفاده با عملیات:
  • VerifyAccessToken

عنصر <AppEndUser>

<AppEndUser>request.queryparam.app_enduser</AppEndUser>

در مواردی که شناسه کاربر نهایی برنامه باید به سرور مجوز ارسال شود، این عنصر به شما امکان می‌دهد مشخص کنید که Edge کجا باید برای شناسه کاربر نهایی جستجو کند. به عنوان مثال، می تواند به عنوان یک پارامتر پرس و جو یا در یک هدر HTTP ارسال شود.

برای مثال request.queryparam.app_enduser نشان می‌دهد که AppEndUser باید به‌عنوان یک پارامتر پرس و جو وجود داشته باشد، به عنوان مثال، ?app_enduser=ntesla@theramin.com . به عنوان مثال، برای نیاز به AppEndUser در هدر HTTP، این مقدار را روی request.header.app_enduser تنظیم کنید.

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

پیش فرض:

N/A

حضور:

اختیاری

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

هر متغیر جریان قابل دسترسی به سیاست در زمان اجرا.

مورد استفاده با انواع کمک هزینه:
  • مجوز_کد
  • ضمنی
  • رمز عبور
  • client_credentials

<ویژگی ها/ویژگی>

<Attributes>
    <Attribute name="attr_name1" ref="flow.variable" display="true|false">value1</Attribute>
    <Attribute name="attr_name2" ref="flow.variable" display="true|false">value2</Attribute>
</Attributes>

از این عنصر برای افزودن ویژگی های سفارشی به کد دسترسی یا کد مجوز استفاده کنید. برای مثال، ممکن است بخواهید یک شناسه کاربری یا شناسه جلسه را در یک نشانه دسترسی جاسازی کنید که در زمان اجرا قابل استخراج و بررسی باشد.

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

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

نمایش یا پنهان کردن ویژگی های سفارشی در پاسخ

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

به طور پیش فرض، ویژگی های سفارشی در پاسخ ظاهر می شوند. اگر می خواهید آنها را مخفی کنید، می توانید پارامتر نمایش را روی false تنظیم کنید. به عنوان مثال:

<Attributes>
    <Attribute name="employee_id" ref="employee.id" display="false"/>
    <Attribute name="employee_name" ref="employee.name" display="false"/>
</Attributes>

مقدار صفت display ثابت نیست. فرض کنید یک نشانه دسترسی با ویژگی های سفارشی ایجاد می کنید که می خواهید در پاسخ تولید شده پنهان کنید. تنظیم display=false این هدف را محقق می کند. با این حال، اگر یک نشانه دسترسی جدید بعداً با استفاده از یک نشانه تازه‌سازی ایجاد شود، ویژگی‌های سفارشی اصلی از نشانه دسترسی در پاسخ نشانه تازه‌سازی نشان داده می‌شوند. این به این دلیل است که Edge به خاطر نمی‌آورد که ویژگی display در اصل در خط‌مشی ایجاد نشانه دسترسی روی false تنظیم شده بود - ویژگی سفارشی به سادگی بخشی از ابرداده نشانه دسترسی است.

اگر ویژگی‌های سفارشی را به کد مجوز اضافه کنید، همین رفتار را خواهید دید - وقتی یک نشانه دسترسی با استفاده از آن کد ایجاد می‌شود، آن ویژگی‌های سفارشی در پاسخ نشانه دسترسی نشان داده می‌شوند. باز هم، ممکن است این رفتار مورد نظر شما نباشد.

برای پنهان کردن ویژگی های سفارشی در این موارد، این گزینه ها را دارید:

  • مشخصاً ویژگی‌های سفارشی را در خط‌مشی توکن تازه‌سازی بازنشانی کنید و نمایش آن‌ها را روی false تنظیم کنید. در این مورد، ممکن است لازم باشد مقادیر سفارشی اصلی را از توکن دسترسی اصلی با استفاده از خط مشی GetOAuthV2Info بازیابی کنید.
  • از یک خط مشی جاوا اسکریپت پس پردازش برای استخراج دستی هر ویژگی سفارشی که نمی خواهید در پاسخ مشاهده کنید استفاده کنید.

همچنین به سفارشی کردن رمزها و کدهای مجوز مراجعه کنید.

پیش فرض:

N/A

حضور:

اختیاری

مقادیر معتبر:
  • name -نام ویژگی
  • ref - مقدار صفت. می تواند از یک متغیر جریان حاصل شود.
  • display - (اختیاری) به شما امکان می دهد مشخص کنید که آیا ویژگی های سفارشی در پاسخ ظاهر شوند یا خیر. اگر true ، ویژگی‌های سفارشی در پاسخ ظاهر می‌شوند (اگر GenerateResponse نیز فعال باشد). اگر false باشد، ویژگی های سفارشی در پاسخ گنجانده نمی شود. مقدار پیش فرض true است. به نمایش یا پنهان کردن ویژگی های سفارشی در پاسخ مراجعه کنید.
مورد استفاده با انواع کمک هزینه:
  • مجوز_کد
  • ضمنی
  • رمز عبور
  • client_credentials
  • refresh_token
  • همچنین می تواند با عملیات GenerateAuthorizationCode استفاده شود.

عنصر <ClientId>

<ClientId>request.formparam.client_id</ClientId>

در چندین مورد، برنامه مشتری باید شناسه مشتری را به سرور مجوز ارسال کند. این عنصر مشخص می کند که Apigee باید به دنبال شناسه مشتری در متغیر جریان request.formparam.client_id باشد. تنظیم ClientId روی متغیر دیگری پشتیبانی نمی شود. همچنین به درخواست رمزهای دسترسی و کدهای مجوز مراجعه کنید.

پیش فرض:

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

حضور:

اختیاری

نوع: رشته
مقادیر معتبر: متغیر جریان: request.formparam.client_id
مورد استفاده با انواع کمک هزینه:
  • مجوز_کد
  • رمز عبور
  • ضمنی
  • client_credentials

همچنین می تواند با عملیات GenerateAuthorizationCode استفاده شود.

عنصر <Code>

<Code>request.queryparam.code</Code>

در جریان نوع اعطای مجوز، مشتری باید یک کد مجوز را به سرور مجوز (Apigee Edge) ارسال کند. این عنصر به شما امکان می دهد مشخص کنید که Edge کجا باید به دنبال کد مجوز باشد. به عنوان مثال، می تواند به عنوان یک پارامتر پرس و جو، هدر HTTP یا پارامتر فرم (پیش فرض) ارسال شود.

متغیر request.queryparam.auth_code نشان می دهد که کد مجوز باید به عنوان یک پارامتر پرس و جو وجود داشته باشد، به عنوان مثال، ?auth_code=AfGlvs9 . به عنوان مثال، برای نیاز به کد مجوز در هدر HTTP، این مقدار را روی request.header.auth_code تنظیم کنید. همچنین به درخواست رمزهای دسترسی و کدهای مجوز مراجعه کنید.

پیش فرض:

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

حضور:

اختیاری

نوع: رشته
مقادیر معتبر: هر متغیر جریان قابل دسترسی به سیاست در زمان اجرا
مورد استفاده با انواع کمک هزینه: مجوز_کد

عنصر <ExpiresIn>

<ExpiresIn>10000</ExpiresIn> 

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

زمان انقضا همچنین می تواند در زمان اجرا با استفاده از یک مقدار سخت کدگذاری شده و پیش فرض یا با ارجاع به یک متغیر جریان تنظیم شود. برای مثال، می‌توانید یک مقدار انقضای رمز را در یک نقشه ارزش کلید ذخیره کنید، آن را بازیابی کنید، آن را به یک متغیر اختصاص دهید و در خط‌مشی به آن ارجاع دهید. برای مثال، kvm.oauth.expires_in .

با Apigee Edge for Public Cloud ، Edge موجودیت های زیر را حداقل 180 ثانیه پس از دسترسی به موجودیت ها در حافظه پنهان نگه می دارد.

  • نشانه های دسترسی OAuth. این بدان معنی است که یک توکن باطل شده ممکن است تا سه دقیقه، تا زمانی که محدودیت حافظه پنهان آن منقضی شود، موفق باشد.
  • نهادهای سرویس مدیریت کلید (KMS) (برنامه‌ها، توسعه‌دهندگان، محصولات API).
  • ویژگی های سفارشی در توکن های OAuth و موجودیت های KMS.

بند زیر یک متغیر جریان و یک مقدار پیش فرض را نیز مشخص می کند. توجه داشته باشید که مقدار متغیر جریان بر مقدار پیش فرض مشخص شده اولویت دارد.

<ExpiresIn ref="kvm.oauth.expires_in">
    3600000 <!--default value in milliseconds-->
</ExpiresIn>

Edge از راهی برای اجبار به انقضای توکن پس از ایجاد آن پشتیبانی نمی کند. اگر به اجبار انقضای توکن نیاز دارید (مثلاً بر اساس یک شرط)، یک راه حل ممکن در این پست انجمن Apigee توضیح داده شده است.

به طور پیش فرض، توکن های دسترسی منقضی شده به طور خودکار 3 روز پس از انقضا از سیستم Apigee Edge پاک می شوند. همچنین پاک کردن نشانه های دسترسی را ببینید

Private Cloud: برای نصب Edge برای Private Cloud، مقدار پیش‌فرض توسط ویژگی conf_keymanagement_oauth_auth_code_expiry_time_in_millis تنظیم می‌شود. برای تنظیم این ویژگی:

  1. فایل message-processor.properties را در یک ویرایشگر باز کنید. اگر فایل وجود ندارد، آن را ایجاد کنید:
    vi /opt/apigee/customer/application/message-processor.properties
  2. ویژگی را به صورت دلخواه تنظیم کنید:
    conf_keymanagement_oauth_auth_code_expiry_time_in_millis=3600000
  3. مطمئن شوید که فایل خواص متعلق به کاربر "apigee" است:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  4. پردازشگر پیام را مجددا راه اندازی کنید.
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

پیش فرض:

اگر مشخص نشده باشد، سیستم یک مقدار پیش فرض پیکربندی شده در سطح سیستم را اعمال می کند.

حضور:

اختیاری

نوع: عدد صحیح
مقادیر معتبر:
مورد استفاده با انواع کمک هزینه:
  • مجوز_کد
  • ضمنی
  • رمز عبور
  • client_credentials
  • refresh_token

همچنین با عملیات GenerateAuthorizationCode استفاده می شود.

عنصر <ExternalAccessToken>

<ExternalAccessToken>request.queryparam.external_access_token</ExternalAccessToken>

به Apigee Edge می‌گوید کجا یک توکن دسترسی خارجی پیدا کند (یک نشانه دسترسی که توسط Apigee Edge تولید نشده است).

متغیر request.queryparam.external_access_token نشان می دهد که نشانه دسترسی خارجی باید به عنوان یک پارامتر پرس و جو وجود داشته باشد، به عنوان مثال، ?external_access_token=12345678 . به عنوان مثال، برای نیاز به نشانه دسترسی خارجی در یک هدر HTTP، این مقدار را روی request.header.external_access_token تنظیم کنید. همچنین به استفاده از نشانه های OAuth شخص ثالث مراجعه کنید.

عنصر <ExternalAuthorization>

<ExternalAuthorization>true</ExternalAuthorization>

اگر این عنصر نادرست باشد یا وجود نداشته باشد، Edge به طور معمول client_id و client_secret را در برابر فروشگاه مجوز Apigee Edge اعتبار می‌دهد. زمانی که می خواهید با توکن های OAuth شخص ثالث کار کنید از این عنصر استفاده کنید. برای جزئیات بیشتر در مورد استفاده از این عنصر، به استفاده از توکن های OAuth شخص ثالث مراجعه کنید.

پیش فرض:

نادرست

حضور:

اختیاری

نوع: بولی
مقادیر معتبر: درست یا نادرست
مورد استفاده با انواع کمک هزینه:
  • مجوز_کد
  • رمز عبور
  • client_credentials

عنصر <ExternalAuthorizationCode>

<ExternalAuthorizationCode>request.queryparam.external_auth_code</ExternalAuthorizationCode>

به Apigee Edge می‌گوید کجا می‌تواند یک کد تأیید خارجی پیدا کند (کد تأییدی که توسط Apigee Edge تولید نشده است).

متغیر request.queryparam.external_auth_code نشان می دهد که کد اعتبار خارجی باید به عنوان یک پارامتر پرس و جو وجود داشته باشد، به عنوان مثال، ?external_auth_code=12345678 . به عنوان مثال، برای نیاز به کد تأیید خارجی در سرصفحه HTTP، این مقدار را روی request.header.external_auth_code تنظیم کنید. همچنین به استفاده از نشانه های OAuth شخص ثالث مراجعه کنید.

عنصر <ExternalRefreshToken>

<ExternalRefreshToken>request.queryparam.external_refresh_token</ExternalRefreshToken>

به Apigee Edge می‌گوید کجا یک توکن به‌روزرسانی خارجی پیدا کند (یک توکن تازه‌سازی که توسط Apigee Edge تولید نشده است).

متغیر request.queryparam.external_refresh_token نشان می دهد که نشانه refresh خارجی باید به عنوان یک پارامتر پرس و جو وجود داشته باشد، به عنوان مثال، ?external_refresh_token=12345678 . به عنوان مثال، برای نیاز به کد بازخوانی خارجی در سرصفحه HTTP، این مقدار را روی request.header.external_refresh_token تنظیم کنید. همچنین به استفاده از نشانه های OAuth شخص ثالث مراجعه کنید.

عنصر <GenerateResponse>

<GenerateResponse enabled='true'/>

اگر روی true تنظیم شود، این خط‌مشی پاسخی را ایجاد کرده و برمی‌گرداند. به عنوان مثال، برای GenerateAccessToken، پاسخ ممکن است مانند:

{
  "issued_at" : "1467841035013",
  "scope" : "read",
  "application_name" : "e31b8d06-d538-4f6b-9fe3-8796c11dc930",
  "refresh_token_issued_at" : "1467841035013",
  "status" : "approved",
  "refresh_token_status" : "approved",
  "api_product_list" : "[Product1, nhl_product]",
  "expires_in" : "1799",
  "developer.email" : "edward@slalom.org",
  "token_type" : "BearerToken",
  "refresh_token" : "rVSmm3QaNa0xBVFbUISz1NZI15akvgLJ",
  "client_id" : "Adfsdvoc7KX5Gezz9le745UEql5dDmj",
  "access_token" : "AnoHsh2oZ6EFWF4h0KrA0gC5og3a",
  "organization_name" : "cerruti",
  "refresh_token_expires_in" : "0",
  "refresh_count" : "0"
}

در صورت false بودن، پاسخی ارسال نمی شود. در عوض، مجموعه ای از متغیرهای جریان با مقادیر مربوط به عملکرد خط مشی پر می شوند. به عنوان مثال، یک متغیر جریان به نام oauthv2authcode.OAuthV2-GenerateAuthorizationCode.code با کد تأیید جدید ساخته شده پر می شود. توجه داشته باشید که expires_in بر حسب ثانیه در پاسخ بیان می شود.

پیش فرض:

نادرست

حضور:

اختیاری

نوع: رشته
مقادیر معتبر: درست یا نادرست
مورد استفاده با انواع کمک هزینه:
  • ضمنی
  • رمز عبور
  • client_credentials
  • refresh_token
  • همچنین می تواند با عملیات GenerateAuthorizationCode استفاده شود.

عنصر <GenerateErrorResponse>

<GenerateErrorResponse enabled='true'/>

اگر روی true تنظیم شود، در صورتی که ویژگی ContinueOnError روی true تنظیم شود، این خط‌مشی پاسخی ایجاد می‌کند و برمی‌گرداند. اگر false (پیش‌فرض)، پاسخی ارسال نمی‌شود. در عوض، مجموعه ای از متغیرهای جریان با مقادیر مربوط به عملکرد خط مشی پر می شوند.

پیش فرض:

نادرست

حضور:

اختیاری

نوع: رشته
مقادیر معتبر: درست یا نادرست
مورد استفاده با انواع کمک هزینه:
  • ضمنی
  • رمز عبور
  • client_credentials
  • refresh_token
  • همچنین می تواند با عملیات GenerateAuthorizationCode استفاده شود.

<GrantType>

<GrantType>request.queryparam.grant_type</GrantType>

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

به عنوان مثال request.queryparam.grant_type نشان می دهد که رمز عبور باید به عنوان یک پارامتر جستجو وجود داشته باشد، به عنوان مثال، ?grant_type=password . به عنوان مثال، برای نیاز به نوع کمک هزینه در هدر HTTP، این مقدار را روی request.header.grant_type تنظیم کنید. همچنین به درخواست رمزهای دسترسی و کدهای مجوز مراجعه کنید.

پیش فرض:

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

حضور:

اختیاری

نوع: رشته
مقادیر معتبر: یک متغیر، همانطور که در بالا توضیح داده شد.
مورد استفاده با انواع کمک هزینه:
  • مجوز_کد
  • رمز عبور
  • ضمنی
  • client_credentials
  • refresh_token

عنصر <Operation>

<Operation>GenerateAuthorizationCode</Operation>

عملیات OAuth 2.0 توسط این خط مشی اجرا شد.

پیش فرض:

اگر <Operation> مشخص نشده باشد، Edge به لیست <SupportedGrantTypes> نگاه می کند. فقط عملیات بر روی آن انواع کمک هزینه موفقیت آمیز خواهد بود. به عبارت دیگر، اگر یک <GrantType> را در لیست <SupportedGrantTypes> مشخص کنید، می توانید <Operation> حذف کنید. اگر نه <Operation> و نه <SupportedGrantTypes> مشخص نشده باشد، نوع اعطای پیش فرض autorization_code است. به این معنی که درخواست های نوع اعطای autorization_code موفق خواهند شد، اما سایر درخواست ها با شکست مواجه خواهند شد.

حضور:

اختیاری

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

عنصر <PassWord>

<PassWord>request.queryparam.password</PassWord>

این عنصر فقط با نوع اعطای رمز عبور استفاده می شود. با نوع اعطای رمز عبور، اعتبار کاربری (رمز عبور و نام کاربری) باید در اختیار خط مشی OAuthV2 قرار گیرد. عناصر <PassWord> و <UserName> برای تعیین متغیرهایی که Edge بتواند این مقادیر را پیدا کند استفاده می شود. اگر این عناصر مشخص نشده باشند، خط‌مشی انتظار دارد مقادیر (به طور پیش‌فرض) را در پارامترهای فرم با username و password پیدا کند. اگر مقادیر پیدا نشد، خط مشی خطایی ایجاد می کند. شما می توانید از عناصر <PassWord> و <UserName> برای ارجاع به هر متغیر جریان حاوی اعتبارنامه استفاده کنید.

به عنوان مثال، می توانید رمز عبور را در یک درخواست رمز با استفاده از پارامتر query ارسال کنید و عنصر را به این صورت تنظیم کنید: <PassWord>request.queryparam.password</PassWord> . برای نیاز به رمز عبور در هدر HTTP، این مقدار را روی request.header.password تنظیم کنید.

خط مشی OAuthV2 هیچ کار دیگری با این مقادیر اعتبار انجام نمی دهد. Edge به سادگی تأیید می کند که آنها وجود دارند. این به توسعه‌دهنده API بستگی دارد که درخواست مقادیر را بازیابی کند و قبل از اجرای خط‌مشی تولید توکن به یک ارائه‌دهنده هویت ارسال کند.

همچنین به درخواست رمزهای دسترسی و کدهای مجوز مراجعه کنید.

پیش فرض:

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

حضور:

اختیاری

نوع: رشته
مقادیر معتبر: هر متغیر جریانی که در زمان اجرا در اختیار سیاست قرار می گیرد.
مورد استفاده با انواع کمک هزینه: رمز عبور

عنصر <RedirectUri>

<RedirectUri>request.queryparam.redirect_uri</RedirectUri>

مشخص می کند که Edge باید به دنبال پارامتر redirect_uri در درخواست باشد.

درباره URI های تغییر مسیر

URI های هدایت مجدد با کد مجوز و انواع کمک های ضمنی استفاده می شوند. URI تغییر مسیر به سرور مجوز (Edge) می گوید که کجا یک کد مجوز (برای نوع اعطای کد تأیید اعتبار) یا نشانه دسترسی (برای نوع اعطای ضمنی) ارسال کند. این مهم است که بدانیم چه زمانی این پارامتر مورد نیاز است، چه زمانی اختیاری است و چگونه از آن استفاده می شود:

  • (الزامی) اگر URL بازگشت به تماس با برنامه توسعه دهنده که با کلیدهای کلاینت درخواست مرتبط است ثبت شده باشد، و اگر redirect_uri در درخواست وجود داشته باشد، این دو باید دقیقاً مطابقت داشته باشند. اگر مطابقت نداشته باشند، یک خطا برگردانده می شود. برای کسب اطلاعات در مورد ثبت برنامه‌های توسعه‌دهنده در Edge و تعیین URL بازگشت به تماس، به ثبت برنامه‌ها و مدیریت کلیدهای API مراجعه کنید.

  • (اختیاری) اگر URL بازگشت به تماس ثبت شده باشد و redirect_uri در درخواست وجود نداشته باشد، Edge به URL بازگشت به تماس ثبت شده هدایت می شود.
  • (الزامی) اگر URL بازگشت به تماس ثبت نشده باشد، redirect_uri مورد نیاز است. توجه داشته باشید که در این صورت، Edge هر URL را می پذیرد. این مورد می تواند یک مشکل امنیتی ایجاد کند، بنابراین باید فقط با برنامه های مشتری قابل اعتماد استفاده شود. اگر برنامه های مشتری قابل اعتماد نیستند، بهترین کار این است که همیشه نیاز به ثبت URL بازگشت به تماس داشته باشید.

می توانید این پارامتر را در یک پارامتر query یا در یک هدر ارسال کنید. متغیر request.queryparam.redirect_uri نشان می دهد که RedirectUri باید به عنوان یک پارامتر پرس و جو وجود داشته باشد، به عنوان مثال، ?redirect_uri=login.myapp.com . به عنوان مثال، برای نیاز به RedirectUri در هدر HTTP، این مقدار را روی request.header.redirect_uri تنظیم کنید. همچنین به درخواست رمزهای دسترسی و کدهای مجوز مراجعه کنید.

پیش فرض:

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

حضور:

اختیاری

نوع: رشته
مقادیر معتبر: هر متغیر جریان قابل دسترسی در سیاست در زمان اجرا
مورد استفاده با انواع کمک هزینه:
  • مجوز_کد
  • ضمنی

همچنین با عملیات GenerateAuthorizationCode استفاده می شود.

عنصر <RefreshToken>

<RefreshToken>request.queryparam.refreshtoken</RefreshToken>

هنگام درخواست یک نشانه دسترسی با استفاده از یک نشانه رفرش، باید نشانه رفرش را در درخواست وارد کنید. این عنصر به شما امکان می دهد مشخص کنید که Edge کجا باید به دنبال نشانه رفرش باشد. به عنوان مثال، می تواند به عنوان یک پارامتر پرس و جو، هدر HTTP یا پارامتر فرم (پیش فرض) ارسال شود.

متغیر request.queryparam.refreshtoken نشان می دهد که نشانه refresh باید به عنوان یک پارامتر پرس و جو وجود داشته باشد، به عنوان مثال، ?refresh_token=login.myapp.com . به عنوان مثال، برای نیاز به RefreshToken در هدر HTTP، این مقدار را روی request.header.refresh_token تنظیم کنید. همچنین به درخواست رمزهای دسترسی و کدهای مجوز مراجعه کنید.

پیش فرض:

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

حضور:

اختیاری

نوع: رشته
مقادیر معتبر: هر متغیر جریان قابل دسترسی در سیاست در زمان اجرا
مورد استفاده با انواع کمک هزینه:
  • refresh_token

عنصر <RefreshTokenExpiresIn>

<RefreshTokenExpiresIn>1000</RefreshTokenExpiresIn>

زمان انقضای نشانه‌های تازه‌سازی را در میلی‌ثانیه اعمال می‌کند. مقدار زمان انقضا یک مقدار تولید شده توسط سیستم به اضافه مقدار <RefreshTokenExpiresIn> است. اگر <RefreshTokenExpiresIn> روی تنظیم شود -1 ، نشانه رفرش مطابق با حداکثر انقضای توکن تازه سازی OAuth منقضی می شود. اگر <RefreshTokenExpiresIn> مشخص نشده باشد، سیستم یک مقدار پیش فرض پیکربندی شده در سطح سیستم را اعمال می کند. برای اطلاعات بیشتر در مورد تنظیمات پیش فرض سیستم با پشتیبانی Apigee Edge تماس بگیرید.

زمان انقضا همچنین می تواند در زمان اجرا با استفاده از یک مقدار سخت کدگذاری شده و پیش فرض یا با ارجاع به یک متغیر جریان تنظیم شود. برای مثال، می‌توانید یک مقدار انقضای رمز را در یک نقشه ارزش کلید ذخیره کنید، آن را بازیابی کنید، آن را به یک متغیر اختصاص دهید و در خط‌مشی به آن ارجاع دهید. برای مثال، kvm.oauth.expires_in .

بند زیر یک متغیر جریان و یک مقدار پیش فرض را نیز مشخص می کند. توجه داشته باشید که مقدار متغیر جریان بر مقدار پیش فرض مشخص شده اولویت دارد.

<RefreshTokenExpiresIn ref="kvm.oauth.expires_in">
    3600000 <!--default value in milliseconds-->
</RefreshTokenExpiresIn>

Private Cloud: برای نصب Edge برای Private Cloud، مقدار پیش‌فرض توسط ویژگی conf_keymanagement_oauth_refresh_token_expiry_time_in_millis تنظیم می‌شود. برای تنظیم این ویژگی:

  1. فایل message-processor.properties را در یک ویرایشگر باز کنید. اگر فایل وجود ندارد، آن را ایجاد کنید:
    vi /opt/apigee/customer/application/message-processor.properties
  2. ویژگی را به صورت دلخواه تنظیم کنید:
    conf_keymanagement_oauth_refresh_token_expiry_time_in_millis=3600000
  3. مطمئن شوید که فایل خواص متعلق به کاربر "apigee" است:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  4. پردازشگر پیام را مجددا راه اندازی کنید.
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

پیش فرض:

63072000000 ms (2 سال) (از 05 اوت 2024)

حضور:

اختیاری

نوع: عدد صحیح
مقادیر معتبر:
مورد استفاده با انواع کمک هزینه:
  • مجوز_کد
  • رمز عبور
  • refresh_token

عنصر <ResponseType>

<ResponseType>request.queryparam.response_type</ResponseType>

این عنصر به Edge اطلاع می دهد که برنامه مشتری کدام نوع کمک مالی را درخواست می کند. این فقط با کد مجوز و جریان های نوع کمک ضمنی استفاده می شود.

به طور پیش فرض، Edge به دنبال مقدار نوع پاسخ در یک پارامتر query response_type می گردد. اگر می‌خواهید این رفتار پیش‌فرض را لغو کنید، از عنصر <ResponseType> برای پیکربندی متغیر جریان حاوی مقدار نوع پاسخ استفاده کنید. برای مثال، اگر این عنصر را روی request.header.response_type تنظیم کنید، Edge به دنبال نوع پاسخی است که باید در هدر درخواست ارسال شود. همچنین به درخواست رمزهای دسترسی و کدهای مجوز مراجعه کنید.

پیش فرض:

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

حضور:

اختیاری. اگر می‌خواهید رفتار پیش‌فرض را لغو کنید، از این عنصر استفاده کنید.

نوع: رشته
مقادیر معتبر: code (برای نوع اعطای کد مجوز) یا token (برای نوع اعطای ضمنی)
مورد استفاده با انواع کمک هزینه:
  • ضمنی
  • همچنین با عملیات GenerateAuthorizationCode استفاده می شود.

عنصر <ReuseRefreshToken>

<ReuseRefreshToken>true</ReuseRefreshToken>

هنگامی که روی true تنظیم می شود، نشانه تازه سازی موجود مجدداً استفاده می شود تا زمانی که منقضی شود. در صورت false بودن، زمانی که یک نشانه رفرش معتبر ارائه می شود، یک توکن تازه سازی جدید توسط Apigee Edge صادر می شود.

پیش فرض:

false

حضور:

اختیاری

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

true یا false

مورد استفاده با نوع کمک هزینه:
  • refresh_token

عنصر <Scope>

<Scope>request.queryparam.scope</Scope>

اگر این عنصر در یکی از خط‌مشی‌های GenerateAccessToken یا GenerateAuthorizationCode وجود داشته باشد، از آن برای تعیین محدوده‌هایی برای اعطای رمز یا کد استفاده می‌شود. این مقادیر معمولاً به خط‌مشی در درخواست از یک برنامه مشتری منتقل می‌شوند. می‌توانید عنصر را طوری پیکربندی کنید که یک متغیر جریان را بگیرد و به شما این امکان را می‌دهد که نحوه ارسال دامنه‌ها در یک درخواست را انتخاب کنید. در مثال زیر، request.queryparam.scope نشان می دهد که محدوده باید به عنوان یک پارامتر پرس و جو وجود داشته باشد، به عنوان مثال، ?scope=READ . به عنوان مثال، برای نیاز به دامنه در سرصفحه HTTP، این مقدار را روی request.header.scope تنظیم کنید.

اگر این عنصر در یک خط‌مشی «VerifyAccessToken» ظاهر می‌شود، از آن برای تعیین حوزه‌هایی استفاده می‌شود که این خط‌مشی باید اعمال شود. در این نوع خط‌مشی، مقدار باید یک نام حوزه «کد سخت» باشد -- نمی‌توانید از متغیرها استفاده کنید. به عنوان مثال:

<Scope>A B</Scope>

همچنین به کار با دامنه های OAuth2 و درخواست نشانه های دسترسی و کدهای مجوز مراجعه کنید.

پیش فرض:

بدون دامنه

حضور:

اختیاری

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

اگر با خط‌مشی‌های Generate* استفاده می‌شود، یک متغیر جریان.

اگر با VerifyAccessToken استفاده شود، فهرستی از نام‌های محدوده (رشته‌ها) از هم جدا شده است.

مورد استفاده با انواع کمک هزینه:
  • مجوز_کد
  • ضمنی
  • رمز عبور
  • client_credentials
  • همچنین می تواند با عملیات GenerateAuthorizationCode و VerifyAccessToken استفاده شود.

عنصر <State>

<State>request.queryparam.state</State>

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

برای مثال request.queryparam.state نشان می‌دهد که حالت باید به عنوان یک پارامتر پرس و جو وجود داشته باشد، به عنوان مثال، ?state=HjoiuKJH32 . به عنوان مثال، برای نیاز به وضعیت در یک هدر HTTP، این مقدار را روی request.header.state تنظیم کنید. همچنین به درخواست رمزهای دسترسی و کدهای مجوز مراجعه کنید.

پیش فرض:

بدون ایالت

حضور:

اختیاری

نوع: رشته
مقادیر معتبر: هر متغیر جریان قابل دسترسی به سیاست در زمان اجرا
مورد استفاده با انواع کمک هزینه:
  • همه
  • همچنین می تواند با عملیات GenerateAuthorizationCode استفاده شود

عنصر <StoreToken>

 <StoreToken>true</StoreToken> 

وقتی عنصر <ExternalAuthorization> true است، این عنصر را روی true تنظیم کنید. عنصر <StoreToken> به Apigee Edge می‌گوید که رمز دسترسی خارجی را ذخیره کند. در غیر این صورت تداوم نخواهد داشت.

پیش فرض:

نادرست

حضور:

اختیاری

نوع: بولی
مقادیر معتبر: درست یا نادرست
مورد استفاده با انواع کمک هزینه:
  • مجوز_کد
  • رمز عبور
  • client_credentials

عنصر <SupportedGrantTypes>/<GrantType>

<SupportedGrantTypes>
    <GrantType>authorization_code</GrantType>
    <GrantType>client_credentials</GrantType>
    <GrantType>implicit</GrantType>
    <GrantType>password</GrantType>
</SupportedGrantTypes>

انواع کمک هزینه های پشتیبانی شده توسط یک نقطه پایانی توکن OAuth در Apigee Edge را مشخص می کند. یک نقطه پایانی ممکن است از چندین نوع کمک مالی پشتیبانی کند (یعنی می‌توان یک نقطه پایانی را برای توزیع نشانه‌های دسترسی برای چندین نوع کمک هزینه پیکربندی کرد.) برای اطلاعات بیشتر در مورد نقاط پایانی، به درک نقاط پایانی OAuth مراجعه کنید. نوع اعطا در درخواست های توکن در پارامتر grant_type ارسال می شود.

اگر هیچ نوع کمک مالی پشتیبانی شده مشخص نشده باشد، تنها انواع اعطای مجاز عبارتند از authorization_code و implicit . عنصر <GrantType> را نیز ببینید (که یک عنصر سطح بالاتر است که برای مشخص کردن جایی که Apigee Edge باید به دنبال پارامتر grant_type که در درخواست مشتری ارسال می‌شود بگردد. Edge مطمئن می‌شود که مقدار پارامتر grant_type با یک مطابقت دارد. از انواع کمک های مالی حمایت شده).

پیش فرض:

مجوز _کد و ضمنی

حضور:

مورد نیاز

نوع: رشته
مقادیر معتبر:
  • client_credentials
  • مجوز_کد
  • رمز عبور
  • ضمنی

عنصر <Tokens>/<Token>

با عملیات ValidateToken و InvalidateToken استفاده می شود. همچنین به تأیید و لغو نشانه های دسترسی مراجعه کنید. عنصر <Token> متغیر جریانی را مشخص می کند که منبع نشانه ای را که باید باطل شود را مشخص می کند. اگر از توسعه دهندگان انتظار می رود که نشانه های دسترسی را به عنوان پارامترهای جستجو با نام access_token ارسال کنند، برای مثال از request.queryparam.access_token استفاده کنید.

عنصر <UserName>

<UserName>request.queryparam.user_name</UserName>

این عنصر فقط با نوع اعطای رمز عبور استفاده می شود. با نوع اعطای رمز عبور، اعتبار کاربری (رمز عبور و نام کاربری) باید در اختیار خط مشی OAuthV2 قرار گیرد. عناصر <PassWord> و <UserName> برای تعیین متغیرهایی که Edge بتواند این مقادیر را پیدا کند استفاده می شود. اگر این عناصر مشخص نشده باشند، خط‌مشی انتظار دارد مقادیر (به طور پیش‌فرض) را در پارامترهای فرم با username و password پیدا کند. اگر مقادیر پیدا نشد، خط مشی خطایی ایجاد می کند. شما می توانید از عناصر <PassWord> و <UserName> برای ارجاع به هر متغیر جریان حاوی اعتبارنامه استفاده کنید.

به عنوان مثال، می توانید نام کاربری را در یک پارامتر query ارسال کنید و عنصر <UserName> را به این صورت تنظیم کنید: <UserName>request.queryparam.username</UserName> . برای نیاز به نام کاربری در هدر HTTP، این مقدار را روی request.header.username تنظیم کنید.

خط مشی OAuthV2 هیچ کار دیگری با این مقادیر اعتبار انجام نمی دهد. Edge به سادگی تأیید می کند که آنها وجود دارند. این به توسعه‌دهنده API بستگی دارد که درخواست مقادیر را بازیابی کند و قبل از اجرای خط‌مشی تولید توکن به یک ارائه‌دهنده هویت ارسال کند.

همچنین به درخواست رمزهای دسترسی و کدهای مجوز مراجعه کنید.

پیش فرض:

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

حضور:

اختیاری

نوع: رشته
مقادیر معتبر: هر تنظیم متغیر
مورد استفاده با انواع کمک هزینه: رمز عبور

تایید نشانه های دسترسی

هنگامی که یک نقطه پایانی توکن برای یک پراکسی API تنظیم می شود، یک خط مشی مربوطه OAuthV2 که عملیات VerifyAccessToken را مشخص می کند به جریانی که منبع محافظت شده را در معرض دید قرار می دهد، متصل می شود.

به عنوان مثال، برای اطمینان از اینکه همه درخواست‌ها به یک API مجاز هستند، خط‌مشی زیر تأیید توکن دسترسی را اعمال می‌کند:

<OAuthV2 name="VerifyOAuthAccessToken">
  <Operation>VerifyAccessToken</Operation>
</OAuthV2>

این خط مشی به منبع API پیوست شده است تا محافظت شود. برای اطمینان از اینکه همه درخواست‌های یک API تأیید می‌شوند، خط‌مشی را به درخواست ProxyEndpoint PreFlow، به شرح زیر پیوست کنید:

<PreFlow>
  <Request>
    <Step><Name>VerifyOAuthAccessToken</Name></Step>
  </Request>
</PreFlow>

عناصر اختیاری زیر را می توان برای لغو تنظیمات پیش فرض برای عملیات VerifyAccessToken استفاده کرد.

نام توضیحات
دامنه

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

<OAuthV2 name="ValidateOauthScopePolicy">
  <Operation>VerifyAccessToken</Operation>
  <Scope>READ WRITE</Scope>
</OAuthV2>
AccessToken متغیری که انتظار می رود نشانه دسترسی در آن قرار گیرد. به عنوان مثال request.queryparam.accesstoken . به‌طور پیش‌فرض، انتظار می‌رود که کد دسترسی طبق مشخصات OAuth 2.0 توسط برنامه در سرصفحه مجوز HTTP ارائه شود. اگر انتظار می رود نشانه دسترسی در یک مکان غیر استاندارد مانند یک پارامتر جستجو یا یک عنوان HTTP با نامی غیر از مجوز ارائه شود، از این تنظیم استفاده کنید.

همچنین به تأیید نشانه‌های دسترسی و درخواست نشانه‌های دسترسی و کدهای مجوز مراجعه کنید.

تعیین مکان متغیر درخواست

برای هر نوع کمک مالی، این خط مشی مفروضاتی را در مورد مکان یا اطلاعات مورد نیاز در پیام های درخواست ایجاد می کند. این مفروضات بر اساس مشخصات OAuth 2.0 است. اگر برنامه‌های شما باید از مشخصات OAuth 2.0 منحرف شوند، می‌توانید مکان‌های مورد انتظار را برای هر پارامتر مشخص کنید. به عنوان مثال، هنگام مدیریت یک کد مجوز، می توانید محل کد مجوز، شناسه مشتری، URI تغییر مسیر و محدوده را مشخص کنید. اینها را می توان به عنوان سرصفحه های HTTP، پارامترهای پرس و جو یا پارامترهای فرم مشخص کرد.

مثال زیر نشان می دهد که چگونه می توانید مکان پارامترهای کد مجوز مورد نیاز را به عنوان هدر HTTP مشخص کنید:

  ...
  <GrantType>request.header.grant_type</GrantType>
  <Code>request.header.code</Code>
  <ClientId>request.header.client_id</ClientId>
  <RedirectUri>request.header.redirect_uri</RedirectUri>
  <Scope>request.header.scope</Scope>
  ...

یا در صورت لزوم برای پشتیبانی از پایگاه برنامه مشتری خود، می توانید سرصفحه ها و پارامترهای پرس و جو را با هم ترکیب و مطابقت دهید:

  ...
  <GrantType>request.header.grant_type</GrantType>
  <Code>request.header.code</Code>
  <ClientId>request.queryparam.client_id</ClientId>
  <RedirectUri>request.queryparam.redirect_uri</RedirectUri>
  <Scope>request.queryparam.scope</Scope>
  ...

فقط یک مکان را می توان در هر پارامتر پیکربندی کرد.

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

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

عملیات VerifyAccessToken

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

متغیرهای خاص توکن

متغیرها توضیحات
organization_name نام سازمانی که پروکسی در آن اجرا می شود.
developer.id شناسه توسعه‌دهنده مرتبط با برنامه مشتری ثبت‌شده.
developer.app.name نام توسعه دهنده مرتبط با برنامه مشتری ثبت شده.
client_id شناسه مشتری برنامه مشتری ثبت شده.
grant_type نوع کمک مالی مرتبط با درخواست.
token_type نوع رمز مرتبط با درخواست.
access_token رمز دسترسی که در حال تأیید است.
accesstoken.{custom_attribute} یک ویژگی سفارشی با نام در نشانه دسترسی.
issued_at تاریخی که رمز دسترسی صادر شد بر حسب زمان یونیکس بر حسب میلی ثانیه بیان شد.
expires_in زمان انقضای رمز دسترسی در ثانیه بیان می شود. اگرچه عنصر ExpiresIn انقضا را بر حسب میلی ثانیه تنظیم می کند، اما در متغیرهای پاسخ نشانه و جریان، مقدار در ثانیه بیان می شود.
status وضعیت نشانه دسترسی (مثلاً تأیید یا لغو شده است).
scope محدوده (در صورت وجود) مرتبط با نشانه دسترسی.
apiproduct.<custom_attribute_name> یک ویژگی سفارشی نام‌گذاری شده از محصول API مرتبط با برنامه مشتری ثبت‌شده.
apiproduct.name نام محصول API مرتبط با برنامه مشتری ثبت شده.
revoke_reason

(فقط Apigee Hybrid) نشان می دهد که چرا نشانه دسترسی لغو شده است.

مقدار می تواند REVOKED_BY_APP ، REVOKED_BY_ENDUSER ، REVOKED_BY_APP_ENDUSER ، یا TOKEN_REVOKED باشد.

متغیرهای خاص برنامه

این متغیرها مربوط به Developer App است که با توکن مرتبط است.

متغیرها توضیحات
app.name
app.id
app.accessType
app.callbackUrl
app.status تایید یا لغو شد
app.scopes
app.appFamily
app.apiproducts
app.appParentStatus
app.appType به عنوان مثال: توسعه دهنده
app.appParentId
app.created_by
app.created_at
app.last_modified_at
app.last_modified_by
app.{custom_attributes} یک ویژگی سفارشی با نام برنامه مشتری ثبت شده.

متغیرهای خاص توسعه دهنده

اگر app.appType "Company" باشد، مشخصه های شرکت پر می شوند و اگر app.appType "Developer" باشد، ویژگی های توسعه دهنده پر می شوند.

متغیرها توضیحات
متغیرهای خاص توسعه دهنده
developer.id
developer.userName
developer.firstName
developer.lastName
developer.email
developer.status فعال یا غیر فعال
developer.apps
developer.created_by
developer.created_at
developer.last_modified_at
developer.last_modified_by
developer.{custom_attributes} یک ویژگی سفارشی نامگذاری شده از توسعه دهنده.

متغیرهای خاص شرکت

اگر app.appType "Company" باشد، مشخصه های شرکت پر می شوند و اگر app.appType "Developer" باشد، ویژگی های توسعه دهنده پر می شوند.

متغیرها توضیحات
company.id
company.displayName
company.apps
company.appOwnerStatus
company.created_by
company.created_at
company.last_modified_at
company.last_modified_by
company.{custom_attributes} یک ویژگی سفارشی با نام شرکت.

عملیات GenerateAuthorizationCode

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

پیشوند: oauthv2authcode.{policy_name}.{variable_name}

مثال: oauthv2authcode.GenerateCodePolicy.code

متغیر توضیحات
code کد مجوز تولید شده هنگام اجرای سیاست.
redirect_uri URI تغییر مسیر مرتبط با برنامه مشتری ثبت شده.
scope محدوده اختیاری OAuth در درخواست مشتری ارسال شده است.
client_id شناسه مشتری در درخواست مشتری ارسال شده است.

عملیات GenerateAccessToken و RefreshAccessToken

این متغیرها زمانی تنظیم می شوند که عملیات GenerateAccessToken و RefreshAccessToken با موفقیت اجرا شوند. توجه داشته باشید که متغیرهای نشانه رفرش برای جریان نوع اعطای اعتبار مشتری اعمال نمی شود.

پیشوند: oauthv2accesstoken.{policy_name}.{variable_name}

مثال: oauthv2accesstoken.GenerateTokenPolicy.access_token

نام متغیر توضیحات
access_token نشانه دسترسی که ایجاد شد.
client_id شناسه مشتری برنامه توسعه دهنده مرتبط با این نشانه.
expires_in ارزش انقضا برای توکن. برای جزئیات بیشتر به عنصر <ExpiresIn> مراجعه کنید. توجه داشته باشید که در پاسخ، expires_in بر حسب ثانیه بیان می شود.
scope فهرست دامنه های موجود پیکربندی شده برای توکن. به کار با دامنه های OAuth2 مراجعه کنید.
status یا approved یا revoked .
token_type روی BearerToken تنظیم شده است.
developer.email آدرس ایمیل توسعه‌دهنده ثبت‌شده که مالک برنامه توسعه‌دهنده مرتبط با توکن است.
organization_name سازمانی که پروکسی در آن اجرا می شود.
api_product_list فهرستی از محصولات مرتبط با برنامه توسعه دهنده مربوطه توکن.
refresh_count
refresh_token نشانه رفرشی که ایجاد شد. توجه داشته باشید که توکن‌های تازه‌سازی برای نوع اعطای اعتبار مشتری ایجاد نمی‌شوند.
refresh_token_expires_in طول عمر نشانه رفرش، در چند ثانیه.
refresh_token_issued_at این مقدار زمانی نمایش رشته ای از مقدار زمان 32 بیتی مربوطه است. به عنوان مثال، «چهارشنبه، 21 اوت 2013، 19:16:47 UTC» با مقدار مهر زمانی 1377112607413 مطابقت دارد.
refresh_token_status یا approved یا revoked .

GenerateAccessTokenImplicitGrant

این متغیرها زمانی تنظیم می شوند که عملیات GenerateAccessTokenImplicit برای جریان نوع اعطای ضمنی با موفقیت اجرا شود.

پیشوند: oauthv2accesstoken.{policy_name}.{variable_name}

مثال: oauthv2accesstoken.RefreshTokenPolicy.access_token

متغیر توضیحات
oauthv2accesstoken.access_token نشانه دسترسی که هنگام اجرای خط مشی ایجاد می شود.
oauthv2accesstoken.{policy_name}.expires_in مقدار انقضا برای توکن، در ثانیه. برای جزئیات بیشتر به عنصر <ExpiresIn> مراجعه کنید.

مرجع خطا

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

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

این خطاها ممکن است هنگام اجرای سیاست رخ دهند.

کد خطا وضعیت HTTP علت پرتاب شده توسط عملیات
steps.oauth.v2.access_token_expired 401 رمز دسترسی منقضی شده است.

VerifyAccessToken
InvalidateToken

steps.oauth.v2.access_token_not_approved 401 رمز دسترسی لغو شد. VerifyAccessToken
steps.oauth.v2.apiresource_doesnot_exist 401 منبع درخواستی هیچ یک از محصولات API مرتبط با نشانه دسترسی وجود ندارد. VerifyAccessToken
steps.oauth.v2.FailedToResolveAccessToken 500 این خط‌مشی انتظار داشت که یک نشانه دسترسی در متغیری که در عنصر <AccessToken> مشخص شده است پیدا کند، اما متغیر قابل حل نیست. GenerateAccessToken
steps.oauth.v2.FailedToResolveAuthorizationCode 500 این خط‌مشی انتظار داشت یک کد مجوز را در یک متغیر مشخص شده در عنصر <Code> پیدا کند، اما متغیر قابل حل نیست. GenerateAuthorizationCode
steps.oauth.v2.FailedToResolveClientId 500 این خط‌مشی انتظار داشت شناسه مشتری را در متغیری که در عنصر <ClientId> مشخص شده است پیدا کند، اما متغیر قابل حل نیست. GenerateAccessToken
GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
RefreshAccessToken
steps.oauth.v2.FailedToResolveRefreshToken 500 این خط‌مشی انتظار داشت که یک نشانه تازه‌سازی را در متغیری که در عنصر <RefreshToken> مشخص شده است پیدا کند، اما متغیر قابل حل نیست. RefreshAccessToken
steps.oauth.v2.FailedToResolveToken 500 این خط‌مشی انتظار داشت که یک نشانه را در یک متغیر مشخص شده در عنصر <Tokens> پیدا کند، اما متغیر قابل حل نیست.

ValidateToken
InvalidateToken

steps.oauth.v2.InsufficientScope 403 نشانه دسترسی ارائه شده در درخواست دارای محدوده ای است که با محدوده مشخص شده در خط مشی رمز دسترسی تأیید مطابقت ندارد. برای آشنایی با دامنه، به کار با دامنه های OAuth2 مراجعه کنید. VerifyAccessToken
steps.oauth.v2.invalid_access_token 401 رمز دسترسی ارسال شده از مشتری نامعتبر است. VerifyAccessToken
steps.oauth.v2.invalid_client 401

زمانی که ویژگی <GenerateResponse> خط مشی روی true تنظیم شده باشد و شناسه مشتری ارسال شده در درخواست نامعتبر باشد، این نام خطا برگردانده می شود. مطمئن شوید که از کلید کلاینت و مقادیر مخفی صحیح برای برنامه Developer مرتبط با پروکسی خود استفاده می کنید. به طور معمول، این مقادیر به عنوان یک هدر Basic Authorization کدگذاری شده Base64 ارسال می شوند.

توجه: توصیه می‌شود شرایط قانون خطای موجود را تغییر دهید تا نام‌های invalid_client و InvalidClientIdentifier را بگیرید. برای اطلاعات بیشتر و یک مثال به یادداشت های انتشار 16.09.21 مراجعه کنید.

GenerateAccessToken
RefreshAccessToken
steps.oauth.v2.invalid_request 400 این نام خطا برای چندین نوع خطا استفاده می‌شود، معمولاً برای پارامترهای گم شده یا نادرست ارسال شده در درخواست. اگر <GenerateResponse> روی false تنظیم شده است، از متغیرهای خطا (که در زیر توضیح داده شده است) استفاده کنید تا جزئیات مربوط به خطا، مانند نام و علت خطا را بازیابی کنید. GenerateAccessToken
GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
RefreshAccessToken
steps.oauth.v2.InvalidAccessToken 401 سرصفحه مجوز کلمه "حامل" را ندارد که لازم است. به عنوان مثال: Authorization: Bearer your_access_token VerifyAccessToken
steps.oauth.v2.InvalidAPICallAsNo\
steps.oauth.v2.ApiProductMatchFound
401

پروکسی API در محصول مرتبط با رمز دسترسی نیست.

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

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

VerifyAccessToken
steps.oauth.v2.InvalidClientIdentifier 500

زمانی که ویژگی <GenerateResponse> خط مشی روی false تنظیم شده باشد و شناسه مشتری ارسال شده در درخواست نامعتبر باشد، این نام خطا برگردانده می شود. مطمئن شوید که از کلید کلاینت و مقادیر مخفی صحیح برای برنامه Developer مرتبط با پروکسی خود استفاده می کنید. به طور معمول، این مقادیر به عنوان یک هدر Basic Authorization کدگذاری شده Base64 ارسال می شوند.

توجه: در این شرایط، این خطا را invalid_client می نامیدند. توصیه می‌شود شرایط قانون خطای موجود را تغییر دهید تا نام‌های invalid_client و InvalidClientIdentifier را بگیرید. برای اطلاعات بیشتر و یک مثال به یادداشت های انتشار 16.09.21 مراجعه کنید.

GenerateAccessToken
RefreshAccessToken

steps.oauth.v2.InvalidParameter 500 این خط‌مشی باید یک رمز دسترسی یا یک کد مجوز را مشخص کند، اما نه هر دو را. GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
steps.oauth.v2.InvalidTokenType 500 عنصر <Tokens>/<Token> از شما می خواهد که نوع رمز را مشخص کنید (به عنوان مثال، refreshtoken ). اگر کلاینت از نوع اشتباه عبور کند، این خطا پرتاب می شود. ValidateToken
InvalidateToken
steps.oauth.v2.MissingParameter 500 نوع پاسخ token است، اما هیچ نوع کمک مالی مشخص نشده است. GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
steps.oauth.v2.UnSupportedGrantType 500

مشتری یک نوع کمک مالی را مشخص کرده است که توسط این خط مشی پشتیبانی نمی شود (در عنصر <SupportedGrantTypes> فهرست نشده است).

توجه: در حال حاضر یک اشکال وجود دارد که در آن خطاهای نوع کمک مالی پشتیبانی نشده به درستی پرتاب نمی شوند. اگر یک خطای نوع اعطای پشتیبانی نشده رخ دهد، پروکسی همانطور که انتظار می رود وارد جریان خطا نمی شود.

GenerateAccessToken
GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
RefreshAccessToken

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

این خطاها ممکن است زمانی رخ دهند که یک پروکسی حاوی این خط مشی را مستقر می کنید.

نام خطا علت
InvalidValueForExpiresIn

برای عنصر <ExpiresIn> ، مقادیر معتبر اعداد صحیح مثبت و -1 هستند.

InvalidValueForRefreshTokenExpiresIn برای عنصر <RefreshTokenExpiresIn> ، مقادیر معتبر اعداد صحیح مثبت و -1 هستند.
InvalidGrantType یک نوع کمک مالی نامعتبر در عنصر <SupportedGrantTypes> مشخص شده است. برای فهرستی از انواع معتبر به مرجع خط مشی مراجعه کنید.
ExpiresInNotApplicableForOperation مطمئن شوید که عملیات مشخص شده در عنصر <Operations> منقضی شده است. برای مثال، عملیات VerifyToken اینطور نیست.
RefreshTokenExpiresInNotApplicableForOperation مطمئن شوید که عملیات مشخص شده در عنصر <Operations> از انقضای نشانه رفرش پشتیبانی می کند. برای مثال، عملیات VerifyToken اینطور نیست.
GrantTypesNotApplicableForOperation مطمئن شوید که انواع کمک هزینه مشخص شده در <SupportedGrantTypes> برای عملیات مشخص شده پشتیبانی می شوند.
OperationRequired

شما باید با استفاده از عنصر <Operation> عملیاتی را در این خط مشی مشخص کنید.

توجه: اگر عنصر <Operation> وجود نداشته باشد، UI یک خطای اعتبار سنجی طرحواره ایجاد می کند.

InvalidOperation

شما باید با استفاده از عنصر <Operation> یک عملیات معتبر را در این خط مشی مشخص کنید.

توجه: اگر عنصر <Operation> نامعتبر باشد، UI یک خطای اعتبارسنجی طرحواره ایجاد می کند.

TokenValueRequired شما باید یک مقدار نشانه <Token> را در عنصر <Tokens> مشخص کنید.

متغیرهای خطا

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

متغیرها کجا مثال
fault.name=" fault_name " fault_name نام خطا است، همانطور که در جدول خطاهای Runtime در بالا ذکر شده است. نام خطا آخرین قسمت کد خطا است. fault.name = "invalid_request"
oauthV2. policy_name .failed policy_name نام سیاستی است که توسط کاربر مشخص شده است که خطا را ایجاد کرده است. oauthV2.GenerateAccesstoken.failed = true
oauthV2. policy_name .fault.name policy_name نام سیاستی است که توسط کاربر مشخص شده است که خطا را ایجاد کرده است. oauthV2.GenerateAccesstoken.fault.name = invalid_request

توجه : برای عملیات VerifyAccessToken، نام خطا شامل این پسوند است: keymanagement.service
به عنوان مثال: keymanagement.service.invalid_access_token

oauthV2. policy_name .fault.cause policy_name نام سیاستی است که توسط کاربر مشخص شده است که خطا را ایجاد کرده است. oauthV2.GenerateAccesstoken.cause = Required param : grant_type

نمونه پاسخ خطا

اگر عنصر <GenerateResponse> درست باشد، این پاسخ‌ها به مشتری بازگردانده می‌شوند.

اگر <GenerateResponse> درست باشد، خط مشی خطاهایی را در این قالب برای عملیاتی که توکن ها و کدها را تولید می کنند، برمی گرداند. برای فهرست کامل، به مرجع پاسخ به خطای HTTP OAuth مراجعه کنید.

{"ErrorCode" : "invalid_client", "Error" :"ClientId is Invalid"}

اگر <GenerateResponse> درست باشد، خط مشی خطاهایی را در این قالب برای تأیید و تأیید عملیات برمی‌گرداند. برای فهرست کامل، به مرجع پاسخ به خطای HTTP OAuth مراجعه کنید.

{  
   {  
      "fault":{  
         "faultstring":"Invalid Access Token",
         "detail":{  
            "errorcode":"keymanagement.service.invalid_access_token"
         }
      }
   }

مثال قانون خطا

<FaultRule name=OAuthV2 Faults">
    <Step>
        <Name>AM-InvalidClientResponse</Name>
        <Condition>(fault.name = "invalid_client") OR (fault.name = "InvalidClientIdentifier")</Condition>
    </Step>
    <Step>
        <Name>AM-InvalidTokenResponse</Name>
        <Condition>(fault.name = "invalid_access_token")</Condition>
    </Step>
    <Condition>(oauthV2.failed = true) </Condition>
</FaultRule>

طرح سیاست

هر نوع خط مشی توسط یک طرح XML ( .xsd ) تعریف می شود. برای مرجع، طرح‌های خط‌مشی در GitHub در دسترس هستند.

کار با پیکربندی پیش فرض OAuth

هر سازمان (حتی یک سازمان آزمایشی رایگان) در Apigee Edge دارای یک نقطه پایانی نشانه OAuth است. نقطه پایانی با خط‌مشی‌هایی در پروکسی API به نام oauth از قبل پیکربندی شده است. به محض ایجاد یک حساب کاربری در Apigee Edge می‌توانید از نقطه پایانی نشانه استفاده کنید. برای جزئیات، به درک نقاط پایانی OAuth مراجعه کنید.

پاک کردن نشانه های دسترسی

به‌طور پیش‌فرض، توکن‌های OAuth2 از سیستم Apigee Edge 3 روز (259200 ثانیه) پس از انقضای توکن دسترسی و رمز تجدید (در صورت وجود) پاک می‌شوند. در برخی موارد، ممکن است بخواهید این پیش فرض را تغییر دهید. به عنوان مثال، اگر تعداد زیادی توکن در حال تولید هستند، ممکن است بخواهید زمان پاکسازی را برای صرفه جویی در فضای دیسک کوتاه کنید.

اگر در Edge برای Private Cloud هستید، می‌توانید این پیش‌فرض را با تنظیم ویژگی‌های سازمان همانطور که در این بخش توضیح داده شد تغییر دهید. (پاکسازی 3 روزه توکن های منقضی شده برای Edge برای Private Cloud نسخه 4.19.01 و جدیدتر اعمال می شود. برای نسخه های قبلی، فاصله پاکسازی پیش فرض 180 روز است.)

به‌روزرسانی تنظیمات پاکسازی برای Edge Private Cloud 4.16.01 و نسخه‌های جدیدتر

توجه: فقط نشانه هایی که پس از اعمال این تنظیمات تولید می شوند تحت تأثیر قرار می گیرند. تنظیمات برای توکن هایی که قبلا تولید شده اند اعمال نمی شود.

به روز رسانی تنظیمات پاکسازی برای Edge Private Cloud 4.15.07

توجه: فقط نشانه هایی که پس از اعمال این تنظیمات تولید می شوند تحت تأثیر قرار می گیرند. تنظیمات برای توکن هایی که قبلا تولید شده اند اعمال نمی شود.

رفتار غیر منطبق با RFC

خط مشی OAuthV2 یک پاسخ توکن را برمی گرداند که حاوی ویژگی های غیر منطبق با RFC است. جدول زیر ویژگی های غیرمنطبق برگردانده شده توسط خط مشی OAuthV2 و ویژگی های سازگار مربوطه را نشان می دهد.

OAuthV2 برمی گرداند: ویژگی سازگار با RFC عبارت است از:
"token_type":"BearerToken" "token_type":"Bearer"
"expires_in":"3600" "expires_in":3600

(مقدار سازگار یک عدد است، نه یک رشته.)

همچنین، پاسخ خطا برای یک نشانه رفرش منقضی شده، زمانی که grant_type = refresh_token است:

{"ErrorCode" : "invalid_request", "Error" :"Refresh Token expired"}

با این حال، پاسخ مطابق با RFC این است:

{"error" : "invalid_grant", "error_description" :"refresh token expired"}

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