ما هو تدوير رمز التحديث ولماذا هو مهم؟
غوص في الموضوع ودعنا نتحدث عن سبب كون تدوير رمز التحديث هو وسيلة فعالة لحماية أمان رموز التحديث الخاصة بك.
ما هو رمز التحديث؟
رمز التحديث هو نوع خاص من الرموز الذي يستخدم للحصول على رمز وصول جديد عندما ينتهي صلاحية رمز الوصول الحالي. اطلع على منشورنا السابق فهم الرموز في OIDC لتتعلم المزيد.
خلال المقدمة، ذكرنا أيضًا أنه في Logto، من أجل حماية أمن رموز التحديث الخاصة بك، قمنا بفرض آلية "تدوير رمز التحديث" بشكل افتراضي.
لكن ما هو "تدوير رمز التحديث" تحديدًا؟ كيف يفيد مستخدمينا النهائيين؟ لنغوص في الموضوع!
ما هو تدوير رمز التحديث؟
تدوير رمز التحديث هو آلية تبطل رمز التحديث السابق وتصدر رمزًا جديدًا عندما يتم استخدام رمز التحديث للحصول على رمز وصول جديد. تضمن هذه الآلية أن يتم تجديد رمز التحديث قبل انتهاء صلاحيته.
لماذا نحتاج إلى تدوير رمز التحديث؟
تتمتع رموز التحديث بفترة حياة ممتدة، عادة ما تكون في أسابيع أو حتى أشهر. وبما أننا نستطيع الحصول على رموز وصول جديدة بواسطة رمز التحديث، يصبح رمز التحديث هدفًا جذابًا للمهاجمين أيضًا. ولذلك، وفقًا لـ OAuth 2.0 BCP، يجب على خادم التفويض اتخاذ إحدى التدابير التالية لمنع مثل هذه الهجمات.
- إصدار رموز تحديث مقيدة للمرسل: يوقع العميل ويوفر توقيعًا (
Sec-Token-Binding
) في ترويسة طلب التحديث، بحيث يكون رمز التحديث الصادر مرتبطًا بشكل تشفيري بعميل معين. ومع ذلك، فإن بعض العملاء الأصليين فقط حاليًا هم من تقييد المرسل، ومعظم التطبيقات المنفصلة الحديثة وتطبيقات الجوال هي عامة. - تدوير رمز التحديث: يقوم خادم التفويض بإصدار رمز تحديث جديد (عادة عند التبادل لرمز وصول جديد) وإبطال الرمز السابق. يقلل ذلك من خطر تسريب الرمز.
أفضل الممارسات لتنفيذ تدوير رمز التحديث
في Logto، عندما يتم تسجيل دخول المستخدم بنجاح، سيتم إنشاء كائن Grant
أولًا في قاعدة البيانات وسيحتوي رمز التحديث الصادر بعد ذلك على مرجع grantId
ويشير إلى كائن Grant الأول.
كلما حدث تدوير لرمز التحديث، سيتم وسم رمز التحديث السابق كمستهلك، وسيصدر خادم التفو يض في Logto رمز تحديث جديد بنفس grantId
.
لنفرض أن رمز التحديث السابق تم تسريبه، حينها سيستخدمه العميل الشرعي أو المهاجم لتبادل رمز الوصول. وبغض النظر عن من قام بذلك، يجب أن يكون رمز التحديث المسرب قد تم تدويره ووضع علامة عليه كمستهلك بالفعل. سيبلغ أحدهم الذي استخدم رمز التحديث المستهلك للمرة الثانية خادم التفويض عن الاختراق. سيقوم خادم التفويض بإبطال جميع رموز التحديث بنفس grantId
.
في الحالة أعلاه، بعد إطلاق الإنذار، يمكن للعميل الشرعي فقط إعادة المصادقة من خلال عملية تسجيل الدخول للحصول على رمز تحديث جديد. في حين يفقد المهاجم السيطرة على نظامك ويتم حظره خارجًا.
متى يحدث تدوير رمز التحديث؟
في Logto، يعرف السلوك الافتراضي لتدوير رمز التحديث:
- إذا كان العميل مقيد المرسل أو غير عام (مثل التطبيقات التي تعمل من جانب الخادم)، فإن تدوير رمز التحديث يحدث عندما يصل إلى 70٪ من مجموع الوقت المتبقي له (TTL).
- إذا كان العميل عميلًا عامًا (مثل التطبيقات المنفصلة)، يحدث تدوير رمز التحديث في كل مرة يتم استخدامه لتبادل رمز الوصول. سيعيد رد التبادل الرمزي كلا من رمز الوصول الجديد ورمز التحديث الجديد.
كيف يمكنني تمكين/تعطيل تدوير رمز التحديث في Logto؟
في وحدة تحكم الإدارة في Logto، اذهب إلى Admin Console > Applications وحدد التطبيق الذي تود تبديل تدوير رمز التحديث. في صفحة تفاصيل التطبيق، اذهب إلى علامة "الإعدادات المتقدمة"، وانتقل إلى النهاية، ستجد المفتاح مع بعض الإعدادات المفيدة الأخرى.
إذا قمت بإغلاق المفتاح، لن يتم تدوير رمز التحديث الخاص بك حتى تنتهي صلاحيته. لذلك، نوصي بشدة دائمًا بتمكين تدوير رمز التحديث.
إعادة تلخيص: ما هو تدوير رمز التحديث ولماذا هو مهم؟
تدوير رمز التحديث هو أفضل ممارسة لضمان أمان رمز التحديث في تطبيقك. يبطل رمز التحديث السابق ويصدر واحدًا جديدًا عندما يتم استخدام رمز التحديث للحصول على رمز وصول جديد. تقلل هذه الآلية من خطر تسريب الرمز وتضمن أمان رمز التحديث الخاص بك.
يتبع Logto أفضل الممارسات الرائدة في الصناعة ويض ع دائمًا أمان المستخدم كأولوية قصوى.
آمل أن يوضح هذا المدونة شكوكك حول آلية تدوير رمز التحديث جيدًا. دعنا نعرف إذا كان هناك شيء ما لا يزال غير واضح. ردودك ومقترحاتك مرحب بها دائمًا!
جرب Logto اليوم وتبنى تجربة مصادقة أكثر أمانًا.