Dex هي خدمة هوية تستخدم OpenID Connect لدفع المصادقة للتطبيقات الأخرى.
يعمل Dex كبوابة لموفري الهوية الآخرين من خلال "الموصلات". يتيح ذلك لـ dex تأجيل المصادقة إلى خوادم LDAP أو موفري SAML أو موفري الهوية المعتمدين مثل GitHub وGoogle وActive Directory. يكتب العملاء منطق المصادقة الخاص بهم مرة واحدة للتحدث إلى dex، ثم يعالج dex البروتوكولات الخاصة بواجهة خلفية معينة.
رموز المعرف هي امتداد OAuth2 تم تقديمه بواسطة OpenID Connect والميزة الأساسية لـ dex. رموز المعرف هي رموز ويب JSON (JWTs) موقعة بواسطة dex ويتم إرجاعها كجزء من استجابة OAuth2 التي تشهد على هوية المستخدم النهائي. قد يبدو مثال JWT كما يلي:
eyJhbGciOiJSUzI1NiIsImtpZCI6IjlkNDQ3NDFmNzczYjkzOGNmNjVkZDMyNjY4NWI4NjE4MGMzMjRkOTkifQ.eyJpc3MiOiJodHRwOi8vMTI3LjAuMC4xOjU1NTYvZGV4Iiwic3ViIjoiQ2djeU16UXlOelE1RWdabmFYUm9kV0kiLCJhdWQiOiJleGFtcGxlLWFwcCIsImV4cCI6MTQ5Mjg4MjA0MiwiaWF0IjoxNDkyNzk1NjQyLCJhdF9oYXNoIjoiYmk5NmdPWFpTaHZsV1l0YWw5RXFpdyIsImVtYWlsIjoiZXJpYy5jaGlhbmdAY29yZW9zLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJncm91cHMiOlsiYWRtaW5zIiwiZGV2ZWxvcGVycyJdLCJuYW1lIjoiRXJpYyBDaGlhbmcifQ.OhROPq_0eP-zsQRjg87KZ4wGkjiQGnTi5QuG877AdJDb3R2ZCOk2Vkf5SdP8cPyb3VMqL32G4hLDayniiv8f1_ZXAde0sKrayfQ10XAXFgZl_P1yilkLdknxn6nbhDRVllpWcB12ki9vmAxklAr0B1C4kr5nI3-BZLrFcUR5sQbxwJj4oW1OuG6jJCNGHXGNTBTNEaM28eD-9nhfBeuBTzzO7BKwPsojjj4C9ogU4JQhGvm_l4yfVi0boSx8c0FX3JsiB0yLa1ZdJVWVl9m90XmbWRSD85pNDQHcWZP9hR6CMgbvGkZsgjG32qeRwUL_eNkNowSBNWLrGNPoON1gMg
تحتوي رموز المعرف على مطالبات قياسية تؤكد تطبيق العميل الذي قام بتسجيل دخول المستخدم، ومتى تنتهي صلاحية الرمز المميز، وهوية المستخدم.
{
"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 وتحتوي على مطالبات قائمة على المعايير، يمكن للخدمات الأخرى استهلاكها كبيانات اعتماد خدمة إلى خدمة. تتضمن الأنظمة التي يمكنها بالفعل استهلاك رموز OpenID Connect ID الصادرة عن dex ما يلي:
للحصول على تفاصيل حول كيفية طلب رمز معرف أو التحقق من صحته، راجع "كتابة التطبيقات التي تستخدم dex" .
يعمل Dex أصلاً فوق أي مجموعة Kubernetes باستخدام تعريفات الموارد المخصصة ويمكنه دفع مصادقة خادم واجهة برمجة التطبيقات (API) من خلال المكون الإضافي OpenID Connect. يمكن للعملاء، مثل kubernetes-dashboard
و kubectl
، التصرف نيابة عن المستخدمين الذين يمكنهم تسجيل الدخول إلى المجموعة من خلال أي موفر هوية يدعمه dex.
عندما يقوم مستخدم بتسجيل الدخول من خلال dex، يتم عادةً تخزين هوية المستخدم في نظام آخر لإدارة المستخدم: دليل LDAP، ومؤسسة GitHub، وما إلى ذلك. يعمل Dex بمثابة شريحة بين تطبيق العميل وموفر الهوية الرئيسي. يحتاج العميل فقط إلى فهم OpenID Connect to query dex، بينما ينفذ dex مجموعة من البروتوكولات للاستعلام عن أنظمة إدارة المستخدم الأخرى.
"الموصل" هو إستراتيجية يستخدمها dex لمصادقة مستخدم مقابل موفر هوية آخر. يقوم Dex بتنفيذ الموصلات التي تستهدف منصات معينة مثل GitHub وLinkedIn وMicrosoft بالإضافة إلى البروتوكولات المنشأة مثل LDAP وSAML.
اعتمادًا على قيود الموصلات في البروتوكولات، يمكن أن يمنع dex من إصدار رموز التحديث أو إرجاع مطالبات عضوية المجموعة. على سبيل المثال، نظرًا لأن SAML لا يوفر طريقة غير تفاعلية لتحديث التأكيدات، إذا قام المستخدم بتسجيل الدخول من خلال موصل SAML، فلن يصدر رمز تحديث مميز للعميل. مطلوب دعم رمز التحديث للعملاء الذين يحتاجون إلى الوصول دون اتصال، مثل kubectl
.
يقوم Dex بتنفيذ الموصلات التالية:
اسم | يدعم رموز التحديث | يدعم مطالبة المجموعات | يدعم المطالبة بـ Favorite_username | حالة | ملحوظات |
---|---|---|---|---|---|
لداب | نعم | نعم | نعم | مستقر | |
جيثب | نعم | نعم | نعم | مستقر | |
سامل 2.0 | لا | نعم | لا | مستقر | تحذير: لم تتم صيانته ومن المحتمل أن يكون عرضة لتجاوزات المصادقة (#1884) |
جيتلاب | نعم | نعم | نعم | بيتا | |
اتصال OpenID | نعم | نعم | نعم | بيتا | يتضمن Salesforce وAzure وما إلى ذلك. |
أووث 2.0 | لا | نعم | نعم | ألفا | |
جوجل | نعم | نعم | نعم | ألفا | |
ينكدين | نعم | لا | لا | بيتا | |
مايكروسوفت | نعم | نعم | لا | بيتا | |
AuthProxy | لا | نعم | لا | ألفا | وكلاء المصادقة مثل Apache2 mod_auth، وما إلى ذلك. |
سحابة بيتبوكت | نعم | نعم | لا | ألفا | |
أوبن شيفت | نعم | نعم | لا | ألفا | |
الحشد الأطلسي | نعم | نعم | نعم * | بيتا | يجب تكوين مطالبة اسم المستخدم المفضل من خلال التكوين |
جيتيا | نعم | لا | نعم | بيتا | |
أوبن ستاك كيستون | نعم | نعم | لا | ألفا |
يتم تعريف المستقر وبيتا وألفا على النحو التالي:
سيتم الإعلان عن جميع التغييرات أو الإيقافات لميزات الموصل في ملاحظات الإصدار.
يرجى الاطلاع على سياسة الأمان الخاصة بنا للحصول على تفاصيل حول الإبلاغ عن نقاط الضعف.
عند الانتهاء من جميع الترميز والاختبار، يرجى تشغيل مجموعة الاختبار:
make testall
للحصول على أفضل تجربة للمطورين، قم بتثبيت Nix وdirenv.
وبدلاً من ذلك، قم بتثبيت Go وDocker يدويًا أو باستخدام مدير الحزم. قم بتثبيت بقية التبعيات عن طريق تشغيل make deps
.
لعملية الإصدار، يرجى قراءة وثائق الإصدار.
المشروع مرخص بموجب ترخيص Apache، الإصدار 2.0.