أصبح OpenID Connect المعيار الصناعي للمصادقة الآمنة والحديثة وتسجيل الدخول الموحد (SSO). إذا كنت تبحث عن دليل OpenID Connect عملي وواضح، فهذا الدليل موجه لك. ستتعرف هنا على المفاهيم الأساسية، خطوات التنفيذ، وسيناريوهات حقيقية لتطبيق OpenID Connect في مشاريعك.
ما هو OpenID Connect؟ (أساسيات دليل OpenID Connect)
OpenID Connect هو بروتوكول مصادقة مبني فوق OAuth 2.0. OAuth 2.0 يمنح أذونات للموارد، بينما يركز OpenID Connect على مصادقة المستخدمين وتوفير معلوماتهم بشكل آمن باستخدام رموز JWT.
- مصادقة آمنة: يتجنب حلول المصادقة اليدوية وغير الآمنة.
- SSO: دخول موحد لتطبيقات متعددة عبر مزود هوية واحد.
- قابلية التشغيل: متوافق مع الويب، الجوال، وواجهات API.
- معلومات موحدة: يعيد بيانات المستخدم بتنسيق JWT.
المفاهيم الأساسية
- مزود الهوية (IdP): الجهة التي تصادق المستخدمين (مثلاً Google أو Okta).
- العميل (Client): تطبيقك الذي يحتاج المصادقة.
- المستخدم النهائي: الشخص الذي يسجل الدخول.
- خادم التفويض: غالباً IdP نفسه ويصدر الرموز.
- رمز الهوية (ID Token): JWT يحمل بيانات المستخدم.
- رمز الوصول (Access Token): صلاحية الوصول للموارد (OAuth 2.0).
- مستند الاكتشاف: Endpoint يوفر بيانات التعريف وURLs للسير.
سير عمل المصادقة خطوة بخطوة
- المستخدم يبدأ تسجيل الدخول: ينقر على زر "تسجيل الدخول باستخدام OpenID Connect".
-
توجيه المستخدم لخادم التفويض: متصفح المستخدم يعاد توجيهه إلى authorization endpoint لمزود الهوية مع معلمات:
client_idredirect_uri-
scope(يجب أن يتضمنopenid) state-
response_type(غالباًcode)
https://idp.example.com/authorize? client_id=YOUR_CLIENT_ID &redirect_uri=https://yourapp.com/callback &scope=openid%20profile%20email &response_type=code &state=randomState123 - المستخدم يصادق نفسه: يملأ بيانات الدخول ويوافق على مشاركة بياناته.
-
إعادة التوجيه مع رمز التفويض: بعد نجاح المصادقة، يتم التوجيه إلى
redirect_uriمع كود التفويض.https://yourapp.com/callback?code=AUTH_CODE&state=randomState123 -
استبدال رمز التفويض برموز JWT: السيرفر الخلفي يرسل POST لنقطة نهاية الرموز.
POST /token Host: idp.example.com Content-Type: application/x-www-form-urlencoded grant_type=authorization_code &code=AUTH_CODE &redirect_uri=https://yourapp.com/callback &client_id=YOUR_CLIENT_ID &client_secret=YOUR_CLIENT_SECRET -
استلام الرموز:
-
id_token(JWT) access_token-
refresh_token(اختياري)
{ "access_token": "eyJ...abc", "id_token": "eyJ...xyz", "expires_in": 3600, "token_type": "Bearer" } -
-
التحقق من صحة الرموز واستخدامها: تحقق من صحة
id_token(توقيع، جمهور، انتهاء)، ثم سجل دخول المستخدم. استخدمaccess_tokenللاتصال بـ APIs محمية.
سير العمليات الأكثر أماناً: Authorization Code Flow
- أفضل خيار لتطبيقات الويب (الرموز لا تظهر في المتصفح).
- يدعم التحقق من جهة السيرفر.
- يفضل استخدامه مع PKCE لتطبيقات SPA.
لا ينصح باستخدام Implicit Flow حالياً لأسباب أمنية.
فك تشفير رمز الهوية (ID Token)
رمز id_token هو JWT. يمكنك فك تشفيره لاستخراج بيانات المستخدم مثلاً:
{
"iss": "https://idp.example.com",
"sub": "1234567890",
"aud": "YOUR_CLIENT_ID",
"exp": 1712345678,
"iat": 1712341678,
"email": "user@example.com",
"name": "Jane Doe"
}
- iss: مزود الهوية
- sub: معرف المستخدم
- aud: جمهور التطبيق
- exp: وقت انتهاء الصلاحية
- email, name: بيانات أساسية
تحقق دائماً من التوقيع وصحة البيانات قبل تسجيل المستخدم.
مثال عملي: OpenID Connect مع بايثون
الخطوة 1: بناء URL التفويض
import urllib.parse
params = {
"client_id": "YOUR_CLIENT_ID",
"redirect_uri": "https://yourapp.com/callback",
"response_type": "code",
"scope": "openid profile email",
"state": "randomState123"
}
auth_url = "https://idp.example.com/authorize?" + urllib.parse.urlencode(params)
print(auth_url)
الخطوة 2: استبدال رمز التفويض برموز JWT
import requests
token_data = {
"grant_type": "authorization_code",
"code": "AUTH_CODE",
"redirect_uri": "https://yourapp.com/callback",
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET"
}
resp = requests.post("https://idp.example.com/token", data=token_data)
tokens = resp.json()
print(tokens)
الخطوة 3: فك تشفير والتحقق من id_token
import jwt
id_token = tokens['id_token']
decoded = jwt.decode(id_token, options={"verify_signature": False})
print(decoded)
ملاحظة: في الإنتاج تحقق من التوقيع باستخدام المفتاح العام لمزود الهوية.
سيناريوهات تطبيق عملية
1. SSO عبر عدة تطبيقات
امنح المستخدمين القدرة على الدخول مرة واحدة للوصول لجميع تطبيقات الشركة عبر OpenID Connect.
2. مصادقة واجهات API بأمان
تحقق من id_token في خلفية API لكل طلب. أدوات مثل Apidog تساعدك في اختبار وتصميم هذه النقاط بسرعة.
3. تسجيل دخول اجتماعي
ادمج "تسجيل الدخول باستخدام Google" أو "Microsoft" عبر OpenID Connect بسهولة.
4. مصادقة تطبيقات الجوال
يمكنك تنفيذ نفس سير العمل على تطبيقات الجوال باستخدام deep links أو متصفحات مدمجة.
اختبر تكامل OpenID Connect باستخدام Apidog
اختبر وسيرناريوهات OpenID Connect الخاصة بك بكفاءة عبر منصة Apidog:
- اختبار طلبات API: استخدم واجهة Apidog لمحاكاة طلبات token والتحقق من الاستجابة.
- محاكاة نقاط النهاية: أنشئ نقاط IdP وهمية لاختبار سير عملك دون الاعتماد على مزود خارجي.
- توثيق API: أنشئ وثائق لواجهاتك المؤمنة عبر OpenID Connect لسهولة التعاون مع الفرق.
دمج Apidog في سير عملك يقلل الأخطاء ويسرّع التطوير ويضمن قوة المصادقة.
أفضل الممارسات مع OpenID Connect
- تحقق من رموز
id_tokenدائماً (التوقيع، المصدر، الجمهور، والانتهاء). - استخدم HTTPS دائماً لنقل البيانات.
- حافظ على سرية
client_secretوالرموز. - نفذ معالجة أخطاء قوية لعمليات الدخول والرموز المنتهية أو الجلسات الملغاة.
- تابع تحديث المكتبات والمعايير باستمرار.
الخطوات التالية
- سجل تطبيقك لدى مزود هوية موثوق (Google, Auth0, Okta...).
- نفذ Authorization Code Flow مستخدماً الخطوات أعلاه.
- اختبر كامل سير العمل عبر Apidog لتحقق الأمان والاستقرار.
- تعلم المزيد عبر استكشاف مواضيع مثل اكتشاف OpenID Connect وتسجبل العميل الديناميكي.
مع هذا الدليل، أصبح بإمكانك بناء مصادقة حديثة وقوية لأي تطبيق. ترميز موفق!
Top comments (0)