OpenID Connect (OIDC)
إضافة الهوية فوق OAuth.
OpenID Connect (OIDC) درس مجاني في Cyber Security Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Cyber Security Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Cyber Security Academy 4 دروس في المجموع.
سبب وجود OIDC
يُعد OpenID Connect طبقة هوية رقيقة مبنية فوق OAuth 2.0. يجيب OAuth عن سؤال ما الذي يستطيع هذا التطبيق فعله، بينما يجيب OIDC عن سؤال من هو المستخدم.
- يوحّد كيفية مصادقة العملاء للمستخدمين وتلقي مطالبات الهوية الموثّقة.
- يقدّم رمز ID بوصفه إثباتًا للمصادقة موقّعًا تشفيريًا.
قبل OIDC، أساء المطورون استخدام رموز وصول OAuth لتسجيل الدخول، مما أدى إلى أخطاء التفويض بالنيابة وانتحال الهوية.
رمز ID (JWT)
العنصر الأساسي المميّز في OIDC هو رمز ID، وهو JWT موقّع يصف حدث المصادقة.
- يحمل مطالبات بشأن هوية من سجّل الدخول ووقت حدوث ذلك.
- صُمم ليستخدمه العميل، وليس خادم المورد.
لا ترسلوا رمز ID إلى واجهة API بوصفه بيانات اعتماد للوصول، ولا تقبلوه مطلقًا من دون التحقق من توقيعه ومطالباته.
Header.Payload.Signature
{
"iss": "https://idp.example",
"sub": "248289761001",
"aud": "app123",
"exp": 1718000000,
"iat": 1717996400,
"nonce": "n-abc"
}مطالبات رمز ID الأساسية
يعني التحقق من رمز ID فحص مطالبات محددة، وليس التحقق من التوقيع فحسب.
- يجب أن يطابق المُصدِر iss موفّر الهوية المتوقع.
- يجب أن تتضمن الجمهور aud قيمة client_id الخاصة بكم.
- يجب أن يكون الرمز exp / iat غير منتهٍ وصادرًا حديثًا.
- يُعد sub معرّفًا ثابتًا وفريدًا للمستخدم.
- يجب أن تطابق nonce القيمة التي أرسلها العميل.
تدفق مصادقة OIDC
يعيد OIDC استخدام تدفق Authorization Code، لكنه يضيف نطاق openid وقيمة nonce.
- يطلب العميل النطاق
openid، إضافةً إلىprofileوemailالاختياريين. - تعيد نقطة نهاية الرموز رمز ID إلى جانب رمز الوصول.
- تربط
nonceرمز ID بالطلب الأصلي، مما يمنع إعادة استخدامه.
GET /authorize?response_type=code
&scope=openid profile email
&client_id=app123
&redirect_uri=https://app.example/cb
&state=xyz&nonce=n-abcالتحقق من التوقيع باستخدام JWKS
ينشر موفّرو OIDC مفاتيح التوقيع الخاصة بهم في نقطة نهاية JWKS، التي يمكن اكتشافها عبر مستند الإعداد المعروف.
- اجلبوا المفاتيح من
jwks_uriوطابقوا ترويسة الرمزkid. - تحققوا باستخدام الخوارزمية اللامتماثلة المدرجة (RS256، ES256).
ارفضوا الخوارزمية none، ولا تثقوا مطلقًا في قيمة الخوارزمية التي يوردها الرمز وحده.
GET /.well-known/openid-configuration
-> { "jwks_uri": "https://idp.example/jwks", ... }
GET /jwks
-> { "keys": [ { "kid": "k1", "kty": "RSA", ... } ] }تحمي nonce من إعادة الاستخدام
تؤدي nonce مع رموز ID الدور نفسه الذي تؤديه state مع إعادة التوجيه: قيمة تُستخدم مرة واحدة لربط الاستجابة بالطلب.
- ينشئ العميل قيمة nonce عشوائية ويخزنها في الجلسة.
- يعيدها موفّر الهوية داخل رمز ID.
- عند استلام الرمز، يتحقق العميل من تطابق nonce ومن عدم استخدامها من قبل.
يمنع ذلك إعادة استخدام الرموز وحقن رمز أُصدر لجلسة مختلفة.
نقطة نهاية UserInfo
للحصول على بيانات ملف شخصي إضافية تتجاوز ما يقدمه رمز ID، يعرّف OIDC نقطة نهاية UserInfo.
- يستدعيها العميل باستخدام رمز الوصول، وليس رمز ID.
- تعيد مطالبات مثل الاسم والبريد الإلكتروني والصورة للمستخدم الذي تمت مصادقته.
طابقوا دائمًا قيمة sub المُعادة مع قيمة sub في رمز ID لمنع استبدال المطالبات.
GET /userinfo
Authorization: Bearer <access_token>
-> { "sub": "248289761001", "email": "u@example.com" }الاكتشاف والبيانات الوصفية
يوحّد OIDC عملية الاكتشاف كي يتمكن العملاء من إعداد نقاط النهاية والميزات المدعومة تلقائيًا.
- يسرد مستند
/.well-known/openid-configurationنقاط النهاية والنطاقات المدعومة والخوارزميات. - ثبّتوا المُصدِر أو تحقّقوا منه؛ ولا تتبعوا آلية الاكتشاف عميانيًا من مضيف يتحكم فيه مهاجم.
يُبسّط الاكتشاف عملية الدمج، لكن المُصدِر يظل مرساة الثقة التي يجب التحقق منها.
تسجيل الخروج عبر القناة الأمامية والخلفية
تتولى مواصفات تسجيل الخروج في OIDC إنهاء الجلسات عبر التطبيقات الموحدة.
- يستخدم تسجيل الخروج عبر القناة الأمامية عمليات إعادة توجيه أو إطارات iframe في المتصفح لمسح جلسة كل طرف معتمد.
- يرسل تسجيل الخروج عبر القناة الخلفية رموز تسجيل الخروج من خادم إلى خادم؛ وهو أكثر موثوقية لكنه يتطلب نقاط نهاية.
من دون تسجيل خروج منسّق، يمكن للمستخدم تسجيل الخروج من تطبيق واحد مع بقائه مسجّل الدخول إلى تطبيقات أخرى، مما يشكل خطرًا حقيقيًا على إدارة الجلسات.
أخطاء OIDC الشائعة
غالبًا ما تنتج أخطاء الهوية عن تجاوز خطوات التحقق.
- قبول الرموز من دون التحقق من aud، رغم أن الرمز مخصص لعميل آخر.
- تجاهل iss، مما يتيح انتحال موفّر الهوية.
- عدم التحقق من التوقيع أو قبول
alg: none. - الخلط بين رموز ID ورموز الوصول.
- إغفال عمليات التحقق من nonce، مما يتيح إعادة الاستخدام.
Validation checklist:
[ ] iss == expected
[ ] aud contains client_id
[ ] exp not passed, iat sane
[ ] signature verified via JWKS
[ ] nonce matches sessionOIDC أم OAuth وحده لتسجيل الدخول
إذا كان هدفكم هو تسجيل الدخول، فاستخدموا OIDC وليس OAuth الخام.
- تكون رموز وصول OAuth غير مكشوفة للعميل، ولا تثبت شيئًا بشأن الهوية.
- قد يكون رمز الوصول صالحًا لمستخدم أو تطبيق مختلف، مما يؤدي إلى انتحال الهوية إذا استُخدم لتسجيل الدخول.
- رموز ID في OIDC هي إثباتات هوية مرتبطة صراحةً بالجمهور.
يمنع هذا التمييز عيب المصادقة التقليدي المتمثل في التفويض بالنيابة المربك.
تحقق سريع: التحقق من رمز ID
اختَروا خطوة التحقق الأكثر أهمية لطرف معتمد يستهلك رمز ID.
مراجعة: OpenID Connect
أهم النقاط:
- يضيف OIDC طبقة هوية إلى OAuth 2.0؛ ورمز ID هو JWT موقّع يثبت المصادقة.
- تحققوا دائمًا من iss وaud وexp والتوقيع (عبر JWKS) وnonce.
- رموز ID مخصصة للعميل، ورموز الوصول مخصصة لواجهات API؛ فلا تخلطوا بين أدوارهما مطلقًا.
- استخدموا
nonceلمنع إعادة الاستخدام وstateللحماية من CSRF. - استخدموا OIDC، لا OAuth الخام، عندما تحتاجون إلى مصادقة المستخدمين.
تعلم Cyber Security Academy مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 76
- الدروس
- 303
الأسئلة الشائعة
هل درس «OpenID Connect (OIDC)» مجاني؟
نعم — نص درس «OpenID Connect (OIDC)» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Cyber Security Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Cyber Security Academy 4 دروس في المجموع.
ماذا ستتعلم في «OpenID Connect (OIDC)»؟
إضافة الهوية فوق OAuth. تتمرن على Cyber Security Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Cyber Security Academy؟
لا تُشترط خبرة سابقة. Cyber Security Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «OpenID Connect (OIDC)»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Cyber Security Academy هذا؟
نعم. كل درس في Cyber Security Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- تدفقات OAuth 2.0
- OpenID Connect (OIDC)
- SAML والاتحاد
- هجمات الرموز وتقويتها