Antipattern: زمان انقضای طولانی را برای توکن های OAuth تعیین کنید

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

Apigee Edge چارچوب OAuth 2.0 را برای ایمن‌سازی APIها ارائه می‌دهد. OAuth2 یکی از محبوب‌ترین طرح‌های احراز هویت و مجوز مبتنی بر توکن و استاندارد باز است. این چارچوب به برنامه‌های کلاینت این امکان را می‌دهد که از طرف کاربران و بدون نیاز به افشای نام کاربری و رمز عبور خود، به APIها دسترسی پیدا کنند.

Apigee Edge به توسعه‌دهندگان اجازه می‌دهد تا با پیاده‌سازی هر یک از چهار نوع اعطای مجوز OAuth2 - اعتبارنامه‌های کلاینت ، رمز عبور ، کد ضمنی و کد مجوز - با استفاده از سیاست OAuthv2، توکن‌های دسترسی و/یا به‌روزرسانی ایجاد کنند. برنامه‌های کلاینت از توکن‌های دسترسی برای استفاده از APIهای امن استفاده می‌کنند. هر توکن دسترسی زمان انقضای خاص خود را دارد که می‌تواند در سیاست OAuthv2 تنظیم شود.

توکن‌های تازه‌سازی (Refresh Tokens) به صورت اختیاری همراه با توکن‌های دسترسی با برخی از انواع مجوزها صادر می‌شوند. توکن‌های تازه‌سازی برای دریافت توکن‌های دسترسی جدید و معتبر پس از انقضا یا ابطال توکن دسترسی اصلی استفاده می‌شوند. زمان انقضای توکن‌های تازه‌سازی را می‌توان در سیاست OAuthv2 نیز تنظیم کرد.

ضدالگو

تنظیم زمان انقضای طولانی برای توکن دسترسی و/یا توکن به‌روزرسانی در سیاست OAuthv2 منجر به انباشت توکن‌های OAuth و افزایش استفاده از فضای دیسک در گره‌های کاساندرا می‌شود.

مثال زیر از سیاست OAuthV2، زمان انقضای طولانی ۲۰۰ روزه را برای توکن‌های به‌روزرسانی نشان می‌دهد:

<OAuthV2 name="GenerateAccessToken">
    <Operation>GenerateAccessToken</Operation>
    <ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes -->
    <RefreshTokenExpiresIn>17280000000</RefreshTokenExpiresIn> <!-- 200 days -->
    <SupportedGrantTypes>
      <GrantType>password</GrantType>
    </SupportedGrantTypes>
    <GenerateResponse enabled="true"/>
</OAuthV2>

در مثال بالا:

  • توکن دسترسی با زمان انقضای نسبتاً پایین‌تری، یعنی ۳۰ دقیقه، تنظیم شده است.
  • توکن به‌روزرسانی با مدت زمان انقضای بسیار طولانی ۲۰۰ روزه تنظیم شده است.
  • اگر ترافیک این API ده درخواست در ثانیه باشد، می‌تواند تا ۸۶۴۰۰۰ توکن در روز تولید کند.
  • از آنجایی که توکن‌های به‌روزرسانی تنها پس از ۲۰۰ روز منقضی می‌شوند، برای مدت طولانی در مخزن داده (کاساندرا) باقی می‌مانند و منجر به انباشت مداوم می‌شوند.

تأثیر

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

بهترین روش

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

زمان انقضای توکن‌های به‌روزرسانی را طوری تنظیم کنید که برای مدت زمان کمی طولانی‌تر از توکن‌های دسترسی معتبر باشد. برای مثال، اگر برای توکن دسترسی ۳۰ دقیقه و برای توکن به‌روزرسانی ۶۰ دقیقه تنظیم کنید.

این تضمین می‌کند که:

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

مطالعه بیشتر