Antipattern: عدم تحديد وقت انتهاء صلاحية لرموز OAuth المميزة

يتم الآن عرض مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
المعلومات

يوفّر Apigee Edge إطار عمل OAuth 2.0 لتأمين واجهات برمجة التطبيقات. OAuth2 هو أحد أكثر مخططات المصادقة والتفويض المفتوحة القياسية المفتوحة والمستندة إلى رمز مميّز. وهي تتيح لتطبيقات العملاء الوصول إلى واجهات برمجة التطبيقات بالنيابة عن المستخدمين بدون الحاجة إلى الإفصاح عن اسم المستخدم وكلمة المرور.

تتيح Apigee Edge لمطوّري البرامج إنشاء رموز الدخول و/أو إعادة التحميل من خلال تنفيذ أي نوع من أنواع منح بروتوكول OAuth2 الأربعة: بيانات اعتماد العميل وكلمة المرور والضمنية ورمز التفويض، وذلك باستخدام سياسة OAuthv2. تستخدم تطبيقات العميل رموز الدخول لاستهلاك واجهات برمجة التطبيقات الآمنة. لكل رمز دخول وقت انتهاء صلاحية خاص به، والذي يمكن ضبطه في سياسة OAuthv2.

يتم إصدار الرموز المميّزة لإعادة التحميل اختياريًا مع رموز الدخول مع بعض أنواع المنح. تُستخدم الرموز المميزة لإعادة التحميل للحصول على رموز دخول جديدة وصالحة بعد انتهاء صلاحية رمز الدخول الأصلي أو إبطاله. يمكن أيضًا ضبط وقت انتهاء صلاحية الرموز المميّزة للتحديث في سياسة OAuthv2.

يرتبط هذا النمط المضاد بالنمط المضاد لتعيين وقت انتهاء صلاحية طويل لرموز OAuth المميزة.

مضادة للأنماط

يؤدي عدم ضبط وقت انتهاء صلاحية لرمز مميز لإعادة التحميل في سياسة OAuthv2 إلى تراكم رموز OAuth المميزة وزيادة استخدام مساحة القرص في عُقد Cassandra.

يعرض المثال التالي سياسة OAuthV2 إعدادات غير متوفّرة لـ <RefreshTokenExpiresIn>:

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

في المثال أعلاه:

  • يتم ضبط رمز الدخول على أن يكون وقت انتهاء الصلاحية منخفض نسبيًا بمقدار 30 دقيقة.
  • لم يتم ضبط تاريخ انتهاء صلاحية الرمز المميّز لإعادة التحميل.
  • يستمر الرمز المميّز لإعادة التحميل في مخزن البيانات (Cassandra) إلى الأبد، ما يؤدي إلى تراكم البيانات.
  • يمكن استخدام الرمز المميّز لإعادة التحميل الذي يتم إنشاؤه بدون تاريخ انتهاء صلاحية إلى أجل غير مسمى لإنشاء رموز دخول.
  • إذا كانت حركة بيانات واجهة برمجة التطبيقات هذه 10 طلبات في الثانية، يمكنها إنشاء ما يصل إلى 864,000 رمز مميّز في اليوم.

التأثير

  • إذا تم إنشاء الرمز المميّز لإعادة التحميل بدون تاريخ انتهاء صلاحية، هناك نتيجتان رئيسيتان:
    • يمكن استخدام الرمز المميّز لإعادة التحميل في أي وقت في المستقبل، وربما لسنوات، للحصول على رمز دخول. قد يكون لذلك آثار أمنية.
    • لن يتم مطلقًا حذف الصف في Cassandra الذي يحتوي على الرمز المميّز للتحديث. سيؤدي ذلك إلى تراكم البيانات في كاساندرا.
  • إذا لم تستخدم الرمز المميّز لإعادة التحميل للحصول على رمز دخول جديد، بل استخدمت بدلاً من ذلك الرمز المميّز لإعادة التحميل ورمز الدخول الجديدَين، سيبقى الرمز المميّز السابق لإعادة التحميل في تطبيق Cassandra. ونتيجة لذلك، سيستمر تراكم الرموز المميزة لإعادة التحميل في Cassandra، ما يزيد من استخدامها لزيادة مساحة التخزين، ويزيد من استخدام القرص، ويزيد من حجم الضغط، وفي نهاية المطاف سيتسبب في حدوث أزمنة في القراءة/الكتابة في Cassandra.

أفضل الممارسات

استخدام وقت انتهاء صلاحية منخفض بشكلٍ مناسب لكل من رموز إعادة التحميل ورموز الدخول. راجِع أفضل الممارسات لضبط أوقات انتهاء صلاحية رموز الدخول وإعادة التحميل. تأكَّد من تحديد إعداد لانتهاء الصلاحية لكل من رمز الوصول ورمز إعادة التحميل في السياسة. يُرجى الرجوع إلى مستندات سياسة OauthV2 للحصول على مزيد من التفاصيل حول ضبط السياسة.

أفضل الممارسات تحديدًا لعملاء Edge الخاص بعملاء Private Cloud

يصف هذا القسم أفضل الممارسات المخصّصة لعملاء Edge الخاص بعملاء Private Cloud.

تحديد تاريخ انتهاء صلاحية تلقائي للرمز المميّز لإعادة التحميل

وحسب الإعدادات التلقائية، إذا لم يتم تحديد تاريخ انتهاء صلاحية الرمز المميز للتحديث في ضبط السياسة، تنشئ أداة Edge رمزًا مميزًا لإعادة التحميل بدون تاريخ انتهاء صلاحية. يمكنك إلغاء هذا السلوك باتّباع الإجراء التالي:

  1. في عقدة معالج الرسائل، عدِّل ملف إلغاء الإعداد $APIGEE_ROOT/customer/application/message-processor.properties أو أنشئه. تأكَّد من أنّ مستخدم apigee يمكنه قراءة هذا الملف.
  2. أضِف السطر التالي إلى الملف:
    conf_keymanagement_oauth_refresh_token_expiry_time_in_millis=3600000
    سيؤدي ذلك إلى ضبط تاريخ انتهاء الصلاحية التلقائي للرمز المميّز لإعادة التحميل، إذا لم يتم تحديد تاريخ في السياسة، وذلك على ساعة واحدة. يمكنك تغيير هذه القيمة التلقائية حسب احتياجات نشاطك التجاري.
  3. أعِد تشغيل خدمة معالج الرسائل:
    apigee-service edge-message-processor restart
  4. كرِّر الخطوات أعلاه في جميع عُقد معالج الرسائل واحدة تلو الأخرى.

أفضل الممارسات في "كاساندرا"

جرِّب الترقية إلى أحدث إصدار من Apigee المتاح للجميع. تواصل Apigee إصدار إصلاحات وتحسينات على المنتجات التي تواصل تحسين وإدارة الرموز المميّزة في Apigee. في Apigee، يتم تخزين الرموز المميزة للوصول وإعادة التحميل في Cassandra ضمن مساحة المفاتيح "kms". عليك التأكّد من ضبط استراتيجية الضغط لمساحة المفتاح هذه على LeveledCompactionStrategy. يجب التحقّق من أنّ الفهارس التالية غير متوفّرة:
  • كمs.oauth_20_access_tokens.oauth_20_access_tokens_organization_name_idx#f0f0f0 و
  • kms.oauth_20_access_tokens.oauth_20_access_tokens_status_idx

يمكنك أيضًا تقليل gc_grace_seconds في الجدول kms.oauth_20_access_tokens من المدة التلقائية التي تبلغ 10 أيام إلى قيمة أقل (مثل 3 أيام) لضمان إزالة ملفات العلامات التي تم إنشاؤها بسبب الرموز المميّزة التي يتم حذفها نهائيًا من مخزن البيانات بشكل أسرع.

محتوى إضافي للقراءة