المقدمة

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


OpenID Connect

الـ OpenID Connect هو Identity Layer فوق الـ OAuth2, اتكلمنا عن ال OAuth في ورقة منفصلة تقدروا تقرأوها من هنا

Open Auth - OAuth 2
ال Open authorization هو Standard أو authorization framework أو طريقة متفق عليها بنستخدمها في ال Delegated third party access وليه اصدارين الاول والثاني, الفرق بينهم كبير و هنا هنتكلم عن طريقة عمل Oauth 2 بما أنه الأسهل والأكثر انتشارًا حاليًا

Open Auth - OAuth2

ولكن اللي يهمنا حاليًا عن الـ OAuth إنه User Authorisation Method فتركيزه الأساسي بيكون على "صلاحيات الوصول"  Access Rights  ودا عن طريق "تفويض" الـ Third Party App إنه يوصل للمعلومات اللي محتاجها عن ال User أو يدير موارد محددة للـ User بدون معرفة كلمة السر الخاصة بيه ولذلك الـ OAuth مش بنستخدمه عشان نعمل Login ولكن بنستعمله للوصول لصلاحيات معينة في موقع تاني.

💡
الـ OpenID Connect هيتيح لينا نفس المميزات ولكن هيحتاج يعرف هوية المستخدم وبياناته الشخصية عشان يتأكد من هويته.

مقارنة بين الـ 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 اللي هيتم استخدامها في عملية التواصل بين الموقع والمستخدم.

💡
الـ Access Token وكذلك الـ Identity Tokens عادة ما يكونوا في صيغة JWT Tokens تقدروا تقرأوا عنها أكتر في ورقة JWT
Json Web Token In a Nutshell
الـ JWT عبارة عن Secure Tokens بيتبعت مع كل Request أو Response عشان نتأكد ان البيانات بين الطرفين متغيرتش، كونها طريقة سهلة وفعالة بيخليها واحدة من أكثر الطرق المستخدمة في الـ User Authentication and Authorization.

Json Web Token In a Nutshell

الاستخدامات المثلى لكلا من الـ OpenID Connect والـ OAuth بتكون في حالات التعامل مع Third Party لأنهم يسمحوا للـ Third Party يستخدم جزء من البيانات الخاصة بالمستخدم في موقعك أو إتاحة  SSO وهي اختصار لـ Single Sign-On.

لكن استخدام OpenID Connect كوسيلة الـ Authentication الأساسية والموقع لا يتعامل مع طرف ثالث هيكون إضافة تعقيد بلا هدف!


OpenID Connect
OpenID Connect

طريقة عمل الـ 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 الخاص بهم.

مصادر

Why you probably don’t need OAuth2 / OpenID Connect!
Learn when you really need to integrate OAuth2 and OpenID Connect!
How OpenID Connect Works - OpenID Foundation
What is OpenID Connect OpenID Connect is an interoperable authentication protocol based on the OAuth 2.0 framework of specifications (IETF RFC 6749 and 6750). It simplifies the way to verify the identity of users based on the authentication performed by an Authorization Server and to obtain user profile information in an interoperable and REST-like manner.OpenID
RFC 6749: The OAuth 2.0 Authorization Framework
What Is OIDC & How It Works
Discover OIDC and how this authentication protocol can improve your application’s security and user experience. Check out the full OIDC guide here.