إدارة جلسة OIDC
توضح هذه المقالة كيفية إدارة جلسات OIDC وحالة مصادقة المستخدم في سياق التفاعلات بين IdP و SP.
ما هي إدارة جلسة OIDC
OpenID Connect (OIDC) هي طبقة هوية بسيطة مبنية على بروتوكول OAuth 2.0. تتيح للعملاء التحقق من هوية المستخدم النهائي بناءً على المصادقة التي يقوم بها خادم التفويض، وكذلك الحصول على معلومات ملف تعريف أساسية حول المستخدم النهائي بطريقة قابلة للتشغيل البيني وقريبة من REST.
تم تصميم OIDC ليكون سهل الاستخدام والتنفيذ، مع التركيز على البساطة والمرونة. يتم استخدامه على نطاق واسع لتسجيل الدخول الموحد (SSO) والتحقق من الهوية في تطبيقات الويب وتطبيقات الهاتف المحمول وواجهات برمجة التطبيقات.
فهم حالة المصادقة وإدارة الجلسات في OIDC أمر بالغ الأهمية. تشرح هذه المقالة كيفية إدارة جلسات OIDC وحالة مصادقة المستخدم في سياق التفاعلات بين مزود الهوية (IdP) والطرف المعتمد (RP) أو مزود الخدمة (SP).
تتضمن هذه المقالة العديد من المصطلحات الأساسية.
- مزود الهوية (IdP): الخدمة التي تخزن وتُصادق على هويات المستخدمين.
- مزود الخدمة (SP) أو الطرف المعتمد (RP): تطبيق ويب أو خدمة تقد م خدمات للمستخدمين وتعتمد على IdP لمصادقة المستخدم.
- جلسة تسجيل الدخول أو جلسة المصادقة: الجلسة التي تُنشأ عند تسجيل دخول المستخدم إلى IdP.
- الترخيص: المعلومات المركزية للمصادقة والتفويض للمستخدم التي يُنشئها ويديرها IdP.
- تسجيل الدخول الموحد (SSO): خدمة جلسة ومصادقة المستخدم التي تسمح للمستخدم باستخدام مجموعة واحدة من بيانات الاعتماد (مثل الاسم وكلمة المرور) للوصول إلى تطبيقات متعددة.
كيف تعمل تدفق مصادقة OIDC
لفهم أفضل لإدارة حالة المصادقة وجلسات المستخدم في OIDC، دعنا نراجع بسرعة تدفق مصادقة OIDC لتطبيق ويب:
- يصل المستخدم إلى تطبيق الويب (RP).
- يوجه RP المستخدم إلى موفر OIDC (IdP) للمصادقة.
- يتحقق موفر OIDC من حالة جلسة تسجيل دخول المستخدم. إذا لم تكن هناك جلسة موجودة أو انتهت صلاحيتها، يُطلب من المستخدم تسجيل الدخول.
- يتفاعل المستخدم مع صفحة تسجيل الدخول للحصول على المصادقة.
- تُقدم صفحة تسجيل الدخول نتيجة التفاعل إلى موفر OIDC.
- ينشئ موفر OIDC جلسة تسجيل دخول وترخيص مصادقة جديد للمستخدم.
- يُعيد موفر OIDC توجيه المستخدم إلى RP بكود المصادقة (تدفق كود التفويض).
- يستقبل RP كود المصادقة ويتبادله للحصول على الرموز للوصول إلى معلومات المستخدم.
ما هي إدارة جلسة تسجيل دخول RP
تُنشأ جلسة تسجيل دخول عندما يُسجل المستخدم الدخول إلى IdP. تُستخدم هذه الجلسة لتعقب حالة مصادقة المستخدم في IdP. تشتمل الجلسة عادةً على معلومات مثل هوية المستخدم ووقت المصادقة ووقت انتهاء الجلسة. تُنشأ عندما يُسجل المستخدم الدخول لأول مرة وتُحفظ حتى يُسجل المستخدم الخروج أو تنتهي صلاحية الجلسة.
سيتم تعيين ملف تعريف الجلسة بأمان في متصفح المستخدم للحفاظ على حالة الجلسة. يُستخدم ملف تعريف الجل سة لتحديد جلسة المستخدم ومصادقته للطلبات التالية للمصادقة. يتم عادةً تعيين هذا الملف بأعلام HttpOnly
و Secure
لمنع الوصول من جانب العميل وضمان الاتصالات الآمنة.
جلسة واحدة لـ RP واحدة
لكل RP يُصل إليها المستخدم من أجهزة أو متصفحات مختلفة، سيتم إنشاء جلسة تسجيل دخول منفصلة للمستخدم. هذا يعني أن حالة مصادقة المستخدم تُحفظ بشكل منفصل لكل RP. إذا خرج المستخدم من RP واحدة، سيظل المستخدم مُصادقًا في RPs الأخرى حتى تنتهي صلاحية الجلسة أو يخرج المستخدم من جميع RPs.
جلسة مركزية للعديد من RPs
تمكن هذه الإدارة المركزية للجلسة IdP من الحفاظ على حالة مصادقة متسقة عبر العديد من RPs طالما أن جلسة المستخدم نشطة وتأتي طلبات المصادقة من العميل المستخدم نفسه (الجهاز/المتصفح). تُمكن هذه الآلية من قدرات SSO، حيث يمكن للمستخدم الوصول إلى العديد من RPs دون الحاجة إلى تسجيل الدخول مرة أخرى.
حالة المصادقة من جانب العميل
في OIDC، يعتمد تطبيق العميل (RP) على الرموز التي يصدرها IdP للتحقق من هوية المستخدم وحالة المصادقة أو التفويض. تُحفظ "جلسة تسجيل الدخول" من جانب العميل بواسطة الرموز التي يُصدرها IdP.
- رمز الهوية: رمز قصير العمر يحتوي على معلومات المستخدم ويُستخدم للتحقق من هوية المستخدم المصادق.
- رمز الوصول: رمز يمنح الوصول إلى الموارد المحمية نيابة عن المستخدم. يمكن أن يكون عمر رمز الوصول قصيرًا أو طويلًا، حسب التكوين. قد تعتمد تطبيقات العميل على صلاحية رمز الوصول لتحديد حالة مصادقة المستخدم. إذا انتهت صلاحية رمز الوصول أو تم مسحه، قد يُعتبر المستخدم "متسجل خروج" أو "غير مُصادق" ويحتاج إلى إعادة المصادقة.
- رمز التحديث: إذا طُلب مجال
offline_access
وتم منحه، فقد يحصل تطبيق العميل على رمز تحديث. يوفر وسيلة لتمديد حالة مصادقة المستخدم دون الحاجة إلى إعادة المصادقة. يمكن لتطبيق العميل استخدام رمز التحديث للحصول على رمز وصول جديد عندما تنتهي صلاحية رمز الوصول الحالي. طالما أن رمز التحديث صالح، يمكن الحفاظ على حالة مصادقة المستخدم دون الحاجة لتفاعل المستخدم.
يتيح الجمع بين هذه الرموز لتطبيق العميل الحفاظ على حالة مصادقة المستخدم والوصول إلى الموارد المحمية نيابة عن المستخدم. يجب على تطبيق العميل تخزين هذه الرموز بشكل آمن وإدارة دورة حياتها. (على سبيل المثال، يمكن لتطبيقات SPA تخزين الرموز في التخزين المحلي للمتصفح أو تخزين الجلسة. بالنسبة لتطبيقات الويب، يمكن تخزين الرموز في بيانات الجلسة من جانب الخادم أو ملفات تعريف الارتباط.)
آليات تسجيل الخروج من OIDC
عملية تسجيل الخروج في OIDC مفهوم متعدد الأوجه بسبب مشاركة كل من جلسات تسجيل الدخول التي يُديرها IdP بشكل مركزي والرموز من جانب العميل.
مسح الرموز والجلسة المحلية من جانب العميل
لإلغاء تسجيل الخروج أو إبطال حالة مصادقة المستخدم من جانب العميل، يكون ذلك بسيط نسبيًا. يمكن لتطبيق العميل إزالة الرموز المخزنة (رمز الهوية، رمز الوصول، ورمز التحديث) من متصفح المستخدم أو الذاكرة. فهذا الإجراء يبطل بشكل فعال حالة مصادقة المستخدم من جانب العميل.
بالنسبة لتطبيقات الويب التي تُدير جلسات تسجيل الدخول الخاصة بها، قد تكون خطوات إضافية ضرورية. تشمل هذه الخطوات مسح ملف تعريف الجلسة وأي بيانات جلسة (مثل الرموز الصادرة عن مزود الهوية، أو IdP) لضمان تسجيل خروج المستخدم بالكامل.
مسح جلسة تسجيل الدخول المركزية في IdP
يحافظ IdP على جلسة تسجيل دخول مركزية لكل مستخدم. طالما أن هذه الجلسة نشطة، يمكن إعادة مصادقة المستخدم تلقائيًا حتى لو تم مسح الرموز من جانب العميل، مما يسمح بإصدار رموز جديدة لتطبيق العميل دون الحاجة إلى مزيد من التفاعل مع IdP.
لتسجيل خروج المستخدم بالكامل من IdP، يمكن لتطبيق العميل (RP) بدء طلب تسجيل الخروج إلى IdP. يجب على التطبيق وRP إعادة توجيه المستخدم إلى نقطة نهاية إنهاء الجلسة الخاصة بـ IdP لإنهاء جلسة تسجيل الدخول ومسح ملفات تعريف الجلسة. يضمن ذلك تسجيل الخروج بالكامل عبر جميع التطبيقات (RP) التي تشارك الجلسة المركزية نفسها. بمجرد إنهاء جلسة تسجيل الدخول، كلما استلم IdP طلب رمز من أي من RP المرتبطة والتي تشارك نفس الجلسة، سيقوم IdP بمطالبة المستخدم بإعادة المصادقة.
تسجيل الخروج عبر القناة الخلفية لـ OIDC
في بعض الحالات، عندما يخرج المستخدم من تطبيق واحد (RP)، قد يرغب أيضًا في أن يتم تسجيل الخروج تلقائيًا من جميع التطبيقات الأخرى (RP) دون أي تفاعل إضافي من المستخدم. يمكن تحقيق ذلك باستخدام آلية تسجيل الخروج عبر القناة الخلفية.
عندما يتلقى IdP طلب تسجيل الخروج من RP، لا يقتصر فقط على مسح جلسة تسجيل الدخول بل يرسل أيضًا إشعارًا لتسجيل الخروج عبر القناة الخلفية لجميع RP الذين يستخدمون نفس الجلسة ولديهم نقطة نهاية مسجلة لتسجيل الخروج عبر القناة الخلفية.
عندما يتلقى RP إشعار تسجيل الخروج عبر القناة الخلفية، يمكنه تنفيذ الإجراءات اللازمة لمسح جلسة المستخدم والرموز، مما يضمن أن يتم تسجيل خروج المستخدم بالكامل من جميع التطبيقات.