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

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

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

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

يتم إصدار رموز التحديث بشكل اختياري إلى جانب رموز الدخول مع بعض أنواع المنح. إعادة تحميل الصفحة تُستخدم الرموز المميزة للحصول على رموز دخول جديدة وصالحة بعد انتهاء صلاحية رمز الدخول الأصلي أو . يمكن أيضًا تحديد وقت انتهاء الصلاحية للرموز المميّزة لإعادة التحميل في سياسة 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 دقيقة.
  • لم يتم ضبط تاريخ انتهاء صلاحية الرمز المميّز لإعادة التحميل.
  • يظل الرمز المميز لإعادة التحميل في مخزن البيانات (كاساندرا) إلى الأبد، مما يتسبب في ظهور البيانات والتراكم.
  • يمكن استخدام الرمز المميّز لإعادة التحميل، الذي تم إنشاؤه بدون تاريخ انتهاء، إلى أجل غير مسمى لإنشاء رموز الدخول.
  • إذا كان عدد الزيارات إلى واجهة برمجة التطبيقات هذه 10 طلبات في الثانية، فيمكنها إنشاء ما يصل إلى 864,000 رمز مميز خلال يوم واحد.

التأثير

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

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

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

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

يصف القسم أفضل الممارسات خصيصًا لعملاء Edge for 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. يجب التأكّد من أنّ المؤشرات التالية غير متوفّرة:
  • kms.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 أيام) لضمان إنشاء شواهد القبور التي يتم إنشاؤها بسبب حذف الرموز المميزة تتم إزالتها نهائيًا من مخزن البيانات بشكل أسرع.

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