العربية
  • رمز مميز
  • oidc
  • تجديد الرمز
  • رمز الوصول
  • رمز الهوية

فهم الرموز المميزة للوصول، تجديد الرموز المميزة، ورموز الهوية في بروتوكول OpenID Connect (OIDC)

قد برز بروتوكول OpenID Connect (OIDC) كمعيار مُعتمد على نطاق واسع لإدارة الهوية. ولكن هل تفهم حقًا أدوار وخصائص هذه الرموز المميزة؟

Charles
Charles
Developer

OIDC وOAuth 2.0 والرموز المميزة

قد برز بروتوكول OpenID Connect، المعروف أيضًا بـ OIDC، كمعيار مُعتمد على نطاق واسع لتوفير إطار عمل أساسي لإدارة الهوية. إنه طبقة مصادقة مبنية على بروتوكول OAuth 2.0 الشهير. بينما OAuth 2.0 مخصص فقط لتفويض الموارد، فإن OIDC هو البروتوكول الذي يقيِّم ويقوي مصادقة العملاء، بمساعدة رمز الهوية الجديد الذي تم تقديمه.

انتظر... قد تكون سمعت عن الرموز المميزة للوصول وتجديد الرموز المميزة في عصر OAuth، والآن يأتي مفهوم جديد في OIDC؟ هل تفهم حقًا الفروقات بين هذه الرموز المميزة؟

ما هي الرموز المميزة للوصول، وتجديد الرموز، ورموز الهوية في OIDC؟

لنبدأ بسيناريو عملي.

تخيل أنك تقوم بتطوير تطبيق عميل-خادم نموذجي، ويتواصلان عبر واجهات برمجة تطبيقات RESTful. تريد أن تبقي معظم واجهات برمجة تطبيقاتك خاصة، مما يسمح للعملاء المفوضين فقط بالوصول. ستحتاج إلى آلية لمصادقة العميل وتفويض طلبات API إلى الخادم الخاص بك.

من الناحية المثالية، يجب أن تكون واجهات برمجة تطبيقات RESTful الخاص بك خالية من الحالة، مما يعني أن الخادم لا يجب أن يخزن أي معلومات جلسة العميل. كلما جاء طلب صالح، يجب أن يرد الخادم فقط بالبيانات المطلوبة. هنا تأتي الرموز المميزة في اللعب. لذا، ما نوع الرمز المميز الذي يجب أن تستخدمه في هذه الحالة؟

تُستخدم الرموز المميزة للوصول لحماية واجهات برمجة تطبيقاتك

في OAuth 2.0 وOIDC، يُعتبر كل واجهة برمجة تطبيقات محمية كموارد. الرمز المميز للوصول هو الرمز الذي ينقله العميل إلى الخادم عندما يطلب مورداً لواجهة برمجة التطبيقات، وعادة ما يكون عبر رأس الطلب وبصيغة JWT.

على جانب الخادم، كلما جاء طلب، يحتاج الخادم فقط إلى التحقق مما إذا كان الطلب الوارد يحمل رمز وصول صالح. تتضمن عملية التحقق عادة فك تشفير رمز JWT، والتحقق من التوقيع ووقت الانتهاء، وكذلك مطالبة النطاق للتأكد من أن العميل لديه الأذونات اللازمة.

ومع ذلك، قد تتساءل: إذا كان يمكن لتطبيق العميل الخاص بي الحصول على رمز وصول صالح بعد تسجيل دخول ناجح، واستخدام رمز الوصول لطلب APIs الخادم، أليس هذا كافياً؟ لماذا أحتاج إلى الرموز الأخرى؟

بالفعل، سؤال صالح، واسمحوا لي أن أشرح ذلك خطوة بخطوة.

لماذا نحتاج إلى رموز التجديد؟

بينما من الناحية الفنية تفي الرموز المميزة للوصول بالحد الأدنى من المتطلبات لتشغيل النظام، ومع ذلك، بسبب مخاوف أمنية فإن صلاحية الرموز المميزة للوصول عادةً ما تكون قصيرة جدًا (عادةً ساعة). لذا تخيل إذا كان لدينا فقط رموز للوصول، سيتعين على المستخدمين النهائيين إعادة المصادقة في كل مرة تنتهي فيها صلاحية رمز الوصول. بالنسبة للتطبيقات الحديثة أحادية الصفحة (SPAs) وخاصة التطبيقات المحمولة، تكون عملية تسجيل الخروج المتكرر تجربة مؤلمة للمستخدم، حتى وإن كنا نسعى لحماية أمنهم.

لذلك، نحتاج إلى توازن بين أمان الرموز وراحة المستخدم. هذا السبب في إدخال رموز تجديد.

لماذا يمكن أن تكون مدة صلاحية رموز التجديد أطول؟

تُستخدم رموز الوصول للوصول إلى موارد API، لذا فإن طبيعتها القصيرة تساعد في التقليل من خطر التسرب أو الانتهاك. من ناحية أخرى، نظرًا لأن رموز التجديد تُستخدم فقط للحصول على رموز وصول جديدة، فإنها لا تُستخدم بشكل متكرر كما هو الحال مع رموز الوصول وبالتالي يقلل خطر التعرض. لذا فإن امتلاك فترة صلاحية أطول يُعتبر مقبولاً بالنسبة لرموز التجديد.

ضمان أمان رموز التجديد

نظرًا لأن رمز التجديد يتم تخزينه أيضًا على الجانب العميل، فإن ضمان عدم المساس به يمثل تحديًا، خاصةً بالنسبة للعملاء العامين مثل التطبيقات أحادية الصفحة (SPA) والتطبيقات المحمولة.

في Logto، يتم تمكين آلية التدوير التلقائي لرمز التجديد بشكل افتراضي، مما يعني أن خادم المصادقة سيصدر رمز تجديد جديد بمجرد أن يستوفي المعايير:

  • التطبيقات أحادية الصفحة: تُعرف بأنها عملاء غير مقيدين بالمرسل، تتطلب هذه التطبيقات تدوير رمز التجديد. لا يمكن تحديد وقت الحياة (TTL) لرمز التجديد.
  • التطبيقات الأصلية وتطبيقات الويب التقليدية: يتم تمكين تدوير رمز التجديد بشكل متأصل، يتجدد تلقائيًا عند الوصول إلى 70٪ من TTL الخاص به. تعلم المزيد

بينما لا تزال لديك خيار تعطيل تدوير رمز التجديد في صفحة تفاصيل التطبيق في كونسول الإدارة، يوصى بشدة بالاحتفاظ بهذا الإجراء الوقائي.

ما هو رمز الهوية ولماذا هو مهم؟

رمز الهوية هو ميزة فريدة في OIDC توفر معلومات الهوية حول المستخدم المصادَق عليه.

بينما تُستخدم رموز الوصول للوصول إلى الموارد المحمية وتُستخدم رموز التجديد للحصول على رموز وصول جديدة، تُستخدم رموز الهوية عادةً لتخبئة معلومات المستخدم على الجانب العميل، مما يقلل الحاجة إلى طلبات إضافية إلى خادم المصادقة للحصول على بيانات المستخدم. في معظم الحالات، يُعتبر وجود رمز الهوية معادلًا للمستخدم المصادق عليه.

الممارسات الأفضل للتعامل مع الرموز

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

الخلاصة: الفروقات الرئيسية بين رموز الوصول، وتجديد الرموز، ورموز الهوية في OIDC

في بروتوكول OIDC، تعمل رموز التجديد، ورموز الوصول، ورموز الهوية معًا لتوفير مصادقة آمنة وسلسة للمستخدم.

  • توفر رموز الوصول التخويل للوصول إلى الموارد المحمية.
  • تقضي رموز التجديد على تدخل المستخدم للحصول على رموز وصول جديدة.
  • توفر رموز الهوية معلومات مستخدم مخبأة على العميل، مما يحسن الأداء.

فهم دور وأهمية هذه الرموز يعد أمرًا حيويًا للمطورين الذين ينفذون مصادقة OIDC في تطبيقاتهم.