
مزوّد هوية OpenID Connect (OIDC) وOAuth 2.0 مع موصلات قابلة للتوصيل

Dex هي خدمة هوية تستخدم OpenID Connect لتشغيل المصادقة لتطبيقات أخرى.
يعمل Dex كبوابة لمزوّدي هوية آخرين من خلال "الموصلات." وهذا يتيح لـ dex إحالة المصادقة إلى خوادم LDAP أو مزوّدي SAML أو مزوّدي هوية معروفين مثل GitHub وGoogle وActive Directory. يكتب العملاء منطق المصادقة الخاص بهم مرة واحدة للتواصل مع dex، ثم يتعامل dex مع بروتوكولات الواجهة الخلفية المعينة.
ID Tokens هي امتداد OAuth2 قدّمه OpenID Connect، وهي الميزة الأساسية لـ dex. ID Tokens هي JSON Web Tokens (JWTs) موقّعة من dex وتُعاد كجزء من استجابة OAuth2 التي تثبت هوية المستخدم النهائي. قد يبدو مثال JWT كالتالي:
eyJhbGciOiJSUzI1NiIsImtpZCI6IjlkNDQ3NDFmNzczYjkzOGNmNjVkZDMyNjY4NWI4NjE4MGMzMjRkOTkifQ.eyJpc3MiOiJodHRwOi8vMTI3LjAuMC4xOjU1NTYvZGV4Iiwic3ViIjoiQ2djeU16UXlOelE1RWdabmFYUm9kV0kiLCJhdWQiOiJleGFtcGxlLWFwcCIsImV4cCI6MTQ5Mjg4MjA0MiwiaWF0IjoxNDkyNzk1NjQyLCJhdF9oYXNoIjoiYmk5NmdPWFpTaHZsV1l0YWw5RXFpdyIsImVtYWlsIjoiZXJpYy5jaGlhbmdAY29yZW9zLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJncm91cHMiOlsiYWRtaW5zIiwiZGV2ZWxvcGVycyJdLCJuYW1lIjoiRXJpYyBDaGlhbmcifQ.OhROPq_0eP-zsQRjg87KZ4wGkjiQGnTi5QuG877AdJDb3R2ZCOk2Vkf5SdP8cPyb3VMqL32G4hLDayniiv8f1_ZXAde0sKrayfQ10XAXFgZl_P1yilkLdknxn6nbhDRVllpWcB12ki9vmAxklAr0B1C4kr5nI3-BZLrFcUR5sQbxwJj4oW1OuG6jJCNGHXGNTBTNEaM28eD-9nhfBeuBTzzO7BKwPsojjj4C9ogU4JQhGvm_l4yfVi0boSx8c0FX3JsiB0yLa1ZdJVWVl9m90XmbWRSD85pNDQHcWZP9hR6CMgbvGkZsgjG32qeRwUL_eNkNowSBNWLrGNPoON1gMg
تحتوي ID Tokens على مطالبات قياسية تؤكد أي تطبيق عميل سجّل دخول المستخدم، ومتى تنتهي صلاحية الرمز، وهوية المستخدم.
{
"iss": "http://127.0.0.1:5556/dex",
"sub": "CgcyMzQyNzQ5EgZnaXRodWI",
"aud": "example-app",
"exp": 1492882042,
"iat": 1492795642,
"at_hash": "bi96gOXZShvlWYtal9Eqiw",
"email": "[email protected]",
"email_verified": true,
"groups": [
"admins",
"developers"
],
"name": "Jane Doe"
}
نظرًا لأن هذه الرموز موقّعة من dex وتحتوي على مطالبات قياسية، يمكن للخدمات الأخرى استخدامها كبيانات اعتماد بين الخدمات. الأنظمة التي يمكنها بالفعل استهلاك ID Tokens الصادرة عن dex تشمل:
لتفاصيل حول كيفية طلب أو التحقق من ID Token، راجع "كتابة التطبيقات التي تستخدم dex".
يعمل Dex أصليًا فوق أي مجموعة Kubernetes باستخدام Custom Resource Definitions ويمكنه قيادة مصادقة خادم API عبر إضافة OpenID Connect. يمكن للعملاء، مثل kubelogin وkubectl، التصرف نيابة عن المستخدمين الذين يمكنهم تسجيل الدخول إلى المجموعة عبر أي مزوّد هوية يدعمه dex.
عندما يسجّل المستخدم دخوله عبر dex، تُخزَّن هوية المستخدم عادةً في نظام آخر لإدارة المستخدمين: دليل LDAP، أو مؤسسة GitHub، إلخ. يعمل Dex كطبقة وسيطة بين تطبيق العميل ومزوّد الهوية الأصلي. يحتاج العميل فقط إلى فهم OpenID Connect للاستعلام من dex، بينما ينفّذ dex مجموعة من البروتوكولات للاستعلام عن أنظمة إدارة المستخدمين الأخرى.

"الموصل" هو استراتيجية يستخدمها dex لمصادقة مستخدم عبر مزوّد هوية آخر. ينفّذ dex موصلات تستهدف منصات محددة مثل GitHub وLinkedIn وMicrosoft بالإضافة إلى بروتوكولات راسخة مثل LDAP وSAML.
اعتمادًا على الموصلات، قد تمنع قيود البروتوكولات dex من إصدار رموز التحديث أو إرجاع مطالبات العضوية في المجموعات. على سبيل المثال، نظرًا لأن SAML لا يوفر طريقة غير تفاعلية لتحديث التأكيدات، إذا سجّل مستخدم الدخول عبر موصل SAML، فلن يُصدر dex رمز تحديث لعميله. دعم رمز التحديث مطلوب للعملاء الذين يحتاجون وصولًا دون اتصال، مثل kubectl.
ينفّذ dex الموصلات التالية:
يُعرَّف المستقر والبيتا والألفا على النحو التالي:
سيتم الإعلان عن جميع التغييرات أو إهمال ميزات الموصلات في ملاحظات الإصدار.
راجع التوثيق الرسمي لأدلة البدء والإعداد والاستخدام.
يُرجى مراجعة سياسة الأمان الخاصة بنا للحصول على تفاصيل حول الإبلاغ عن الثغرات الأمنية.
يُرجى مراجعة CONTRIBUTING.md لإعداد التطوير والإرشادات وكيفية تقديم طلبات السحب.
المشروع مرخّص بموجب رخصة Apache، الإصدار 2.0.
| الاسم | يدعم رموز التحديث | يدعم مطالبة المجموعات | يدعم مطالبة preferred_username | الحالة | ملاحظات |
|---|
| LDAP | نعم | نعم | نعم | مستقر | |
| GitHub | نعم | نعم | نعم | مستقر | |
| SAML 2.0 | لا | نعم | لا | مستقر | تحذير: غير مُصان ويُحتمل أن يكون عرضة لتجاوزات المصادقة (#1884) |
| GitLab | نعم | نعم | نعم | بيتا | |
| OpenID Connect | نعم | نعم | نعم | بيتا | يشمل Salesforce وAzure وما إلى ذلك. |
| OAuth 2.0 | لا | نعم | نعم | ألفا | |
| نعم | نعم | نعم | ألفا | ||
| نعم | لا | لا | بيتا | ||
| Microsoft | نعم | نعم | لا | بيتا | |
| AuthProxy | لا | نعم | لا | ألفا | بروكسيات مصادقة مثل Apache2 mod_auth، إلخ. |
| Bitbucket Cloud | نعم | نعم | لا | ألفا | |
| OpenShift | نعم | نعم | لا | ألفا | |
| Atlassian Crowd | نعم | نعم | نعم * | بيتا | يجب تكوين مطالبة preferred_username عبر الإعدادات |
| Gitea | نعم | لا | نعم | بيتا | |
| OpenStack Keystone | نعم | نعم | لا | ألفا |