المقدمة
ال OpenID Connect هو واحد من أشهر طرق الـ User Authentication وأكثرها فعالية ومع ذلك فكرة عمله بسيطة جدًا فورقة وقلم وتعالوا نتعرف إزاي ال OpenID Connect بيشتغل و إيه الفرق بينه وبين الـ OAuth.
OpenID Connect
الـ OpenID Connect هو Identity Layer فوق الـ OAuth2, اتكلمنا عن ال OAuth في ورقة منفصلة تقدروا تقرأوها من هنا

Open Auth - OAuth2
ولكن اللي يهمنا حاليًا عن الـ OAuth إنه User Authorisation Method فتركيزه الأساسي بيكون على "صلاحيات الوصول" Access Rights ودا عن طريق "تفويض" الـ Third Party App إنه يوصل للمعلومات اللي محتاجها عن ال User أو يدير موارد محددة للـ User بدون معرفة كلمة السر الخاصة بيه ولذلك الـ OAuth مش بنستخدمه عشان نعمل Login ولكن بنستعمله للوصول لصلاحيات معينة في موقع تاني.
مقارنة بين الـ OAuth والـ OpenID Connect
| وجه المقارنة | OAuth | OpenID Connnect |
|---|---|---|
| الهدف | إدارة صلاحيات الوصول Authorisation | التأكد من هوية المستخدم Authentication |
| علاقتهما ببعض | يمكن استعماله بمفرده | مبني على الـ OAuth |
| ال Tokens المستعملة | Access token, Refresh Token | Access Token, Refresh Token, ID Token |
| الاستخدامات | إعطاء صلاحيات الوصول للموارد | User Authentication, SSO (Single Sign-On) |
هنلاحظ دايما واحنا بنعمل تسجيل في أي موقع إن فيه كذا طريقة ممكن من خلال الـ Email والـ Password أو من خلال مثلا نستعمل Google / GitHub / Facebook وده اللي بقينا نشوفه حاليا في أغلب المواقع.
فالطرق التقليدية للـ User Authentication اللي بنضطر فيها مثلا ندخل الـ Email والـ Password كان بيوجد طرفين فقط هما الـ User والـ Website والـ Website بيتحقق بنفسه من هوية المستخدم ويستخرج الـ Access والـ Identity Tokens بنفسه.
ولكن في حالة استخدام الموقع للـ OpenID Protocol فهو بيفوض مهمة التأكد من الهوية دي للـ OpenID Provider وكذلك عملية إصدار الـ Tokens اللي هيتم استخدامها في عملية التواصل بين الموقع والمستخدم.

Json Web Token In a Nutshell
الاستخدامات المثلى لكلا من الـ OpenID Connect والـ OAuth بتكون في حالات التعامل مع Third Party لأنهم يسمحوا للـ Third Party يستخدم جزء من البيانات الخاصة بالمستخدم في موقعك أو إتاحة SSO وهي اختصار لـ Single Sign-On.
لكن استخدام OpenID Connect كوسيلة الـ Authentication الأساسية والموقع لا يتعامل مع طرف ثالث هيكون إضافة تعقيد بلا هدف!

طريقة عمل الـ OpenID Connect
بما إنه إضافة علي ال OAuth 2 فطريقة العمل هي نفسها مع بعض الإضافات البسيطة فتعالوا نتعرف علي سيناريو العمل:
- الـ User هيفتح Website ويعمل Login ويستخدم اسمه و كلمة المرور هنا ال Website هيتعرف باسم ال "Relying Party"
- هيبعت الـ Relying Party طلب للـ OpenID Provider (OP)
- يقوم الـ OP بعمل Authentication وأيضًا يحدد صلاحيات الوصول "Authorization" ويقوم بإرسال Identity Token and Access Token للـ Relying Party أو الموقع الذي يريد التأكد من هوية المستخدم
- يقوم الـ Relying Party بإرسال الـ Tokens إلي العميل كي يستخدمها في عمليات التواصل معه
أمثلة عملية على OpenID Connect
- الـ Google Sign-In: يتيح للمستخدمين تسجيل الدخول إلى تطبيقات الطرف الثالث باستخدام حساب Google الخاص بهم.
- الـ Microsoft Azure AD: يوفر تسجيل دخول موحد وخدمات مصادقة للتطبيقات التي تستخدم خدمات Azure.
- الـ GitHub OAuth: يتيح للمطورين تسجيل الدخول إلى تطبيقات وخدمات مختلفة باستخدام حساب GitHub الخاص بهم.
مصادر






Discussion