authentication) تسجيل الدخول عبر OIDC داخل كل Pod من Pods Ayakaleaf Pro. لا توجد لها مهمة في الخلفية ولا Pod منفصل. جانب الموفّر (العميل، وعناوين URI لإعادة التوجيه، وادعاء المسؤول) هو نفسه كما في Toolkit، لذا أعدّ موفّر OpenID (OP) الخاص بك أولًا باتباع مصادقة OIDC، ثم ضع القيم في Kubernetes كما هو موضح أدناه.
أين تعمل المكوّنات
الإعداد
1
سجّل Overleaf لدى الـ OP
اسمح بهذه العناوين في الـ OP، وهي مبنية على
OVERLEAF_SITE_URL:اعثر على عناوين URL الخمسة في مستند الاكتشاف (discovery document) الخاص بالـ OP كما هو موضح في العثور على القيم باستخدام مستند الاكتشاف.
2
أضف الإعدادات إلى الـ ConfigMap
أضف ما يلي إلى يقبل
overleaf-env (30-config.yaml، أو 60-config.yaml في حالة عدة نسخ متماثلة):30-config.yaml (additions)
EXTERNAL_AUTH قائمة مفصولة بمسافات، مثل ldap oidc. راجع متغيرات البيئة لمعرفة كل إعدادات OVERLEAF_OIDC_*؛ وكلها توضع في الـ ConfigMap باستثناء سر العميل.3
ضع سر العميل في الـ Secret
4
الوثوق بجهة شهادات خاصة (اختياري)
إذا كانت شهادة الـ OP صادرة عن جهة شهادات (CA) خاصة بك، فأضف جهة الشهادات إلى الـ Secret
overleaf-certs المركّب على /var/lib/overleaf/certs (راجع الشهادات والملفات الأخرى) ووجّه Node.js إليها:5
طبّق التغييرات وأعد التشغيل
405 لطلب GET) يعني أنه يمكن الوصول إلى نقطة النهاية؛ أما 000 فيعني أنه لا يمكن الوصول إليها.عدة نسخ متماثلة
لا حاجة إلى شيء إضافي. تُحفظ قيمةstate الخاصة بتسجيل الدخول ورمز ID token المستخدم لتسجيل الخروج في الجلسة، الموجودة في Redis، لذا يعمل الاستدعاء الراجع (callback) على أي نسخة متماثلة تستقبله.
الاختبار على Kubernetes
مع goauthentik بوصفه الـ OP، على Kubernetes 1.37 مع ثلاث نسخ متماثلة خلف HAProxy، نجحت اختباراتنا الشاملة لـ OIDC (35 حالة): تسجيل الدخول، وتسجيل الخروج عبر الـ OP؛ وربط صلاحية المسؤول حسب المجموعة، وحسب البريد الإلكتروني، وحسب قيمة واحدة، ودون ربط؛ وتحديث الاسم وعلامة المسؤول عند كل تسجيل دخول؛ وربط الحسابات وإلغاء ربطها؛ وإعادة تعيين كلمة المرور وتغيير كلمات مرور حسابات OIDC؛ والحسابات المعلّقة؛ وOVERLEAF_OIDC_ALLOWED_EMAIL_DOMAINS؛ وOVERLEAF_DISABLE_LOCAL_LOGIN؛ وOIDC مع الوصول العام.
أسئلة وأجوبة
أين أرى سبب فشل تسجيل الدخول؟
أين أرى سبب فشل تسجيل الدخول؟
الإجابة: في سجل web الخاص بالـ Pod الذي خدم الطلب، وليس في مع عدة نسخ متماثلة، تحقّق من كل
kubectl logs:overleaf-N.
