داخليًا، تستخدم وحدة OIDC في Overleaf مكتبة passport-openidconnect. إذا واجهت مشكلات في إعداد OpenID Connect، فمن المفيد قراءة ملف README الخاص بـ passport-openidconnect لتكوين فكرة عن الإعدادات التي تتوقعها.متغير البيئة EXTERNAL_AUTH مطلوب لتفعيل وحدة مصادقة OIDC. يحدد هذا المتغير طرق المصادقة الخارجية المفعّلة. قيمة هذا المتغير عبارة عن قائمة. إذا تضمنت القائمة oidc، فسيتم تفعيل مصادقة OIDC.على سبيل المثال: EXTERNAL_AUTH=ldap oidcعند استخدام طريقة مصادقة OIDC، تتم إعادة توجيه المستخدم إلى موقع المصادقة الخاص بمزوّد الهوية (IdP). إذا نجح مزوّد الهوية في مصادقة المستخدم، يتم البحث في قاعدة بيانات مستخدمي Overleaf عن سجل يحتوي على حقل thirdPartyIdentifiers بالبنية التالية:
يجب أن يطابق externalUserId معرّف المستخدم في الملف الشخصي الذي يعيده خادم مزوّد الهوية (راجع متغير البيئة OVERLEAF_OIDC_USER_ID_FIELD)، ويجب أن يطابق providerId معرّف مزوّد OIDC (راجع OVERLEAF_OIDC_PROVIDER_ID).إذا لم يُعثر على سجل مطابق، يتم البحث في قاعدة البيانات عن مستخدم يطابق عنوان بريده الإلكتروني الأساسي البريد الإلكتروني الموجود في الملف الشخصي للمستخدم لدى مزوّد الهوية:
إذا عُثر على مثل هذا المستخدم، يتم تحديث الحقل thirdPartyIdentifiers.
إذا لم يُعثر على مستخدم مطابق ولم يكن إنشاء الحسابات الفوري (JIT) معطّلًا، يتم إنشاء مستخدم جديد بعنوان البريد الإلكتروني وthirdPartyIdentifiers من الملف الشخصي لدى مزوّد الهوية.
في كلتا الحالتين، يُقال إن المستخدم “مرتبط” بمستخدم OIDC الخارجي. يمكن فك ارتباط المستخدم بمزوّد OIDC من صفحة /user/settings.
ينشر كل مزوّد OpenID (OP) مستند اكتشاف (discovery document) على العنوان <issuer>/.well-known/openid-configuration. انسخ القيم منه بدلًا من كتابتها يدويًا؛ فحرف واحد خاطئ يكفي لتعطيل تسجيل الدخول.
1
اعثر على عنوان URL للاكتشاف
يعرضه مزوّد OP على صفحة العميل (المزوّد) الذي أنشأته لـ Overleaf. في Authentik، افتح Applications > Providers، واختر المزوّد وابحث عن OpenID Configuration URL وOpenID Configuration Issuer:
Authentik: عنوان URL للاكتشاف والـ issuer الخاص بالمزوّد (نسخة اختبارية)
انسخ issuer بدقة، بما في ذلك الشرطة المائلة في النهاية. يقارنه Overleaf حرفًا بحرف مع الـ issuer الموجود في رمز ID token؛ وأي اختلاف يؤدي إلى فشل كل تسجيل دخول عبر OIDC مع الرسالة:{"message":{"message":"ID token not issued by expected OpenID provider."}}في Authentik، ينتمي الـ issuer إلى التطبيق (.../application/o/<application-slug>/). وهو ليس عنوان خادم Authentik، على الرغم من أن عناوين authorize وtoken وuserinfo مشتركة بين جميع التطبيقات.
يمكن العثور على قيم المتغيرات الخمسة المطلوبة التالية باستخدام نقطة النهاية .well-known/openid-configuration الخاصة بمزوّد OpenID لديك (OP)، انظر أعلاه.
معرّف اختياري لمزوّد OpenID، والقيمة الافتراضية هي oidc.
OVERLEAF_OIDC_PROVIDER_NAME
اسم مزوّد OpenID، ويُستخدم في قسم Linked Accounts في صفحة /user/settings، والقيمة الافتراضية هي OIDC Provider.
OVERLEAF_OIDC_IDENTITY_SERVICE_NAME
الاسم المعروض لخدمة الهوية، ويُستخدم في صفحة تسجيل الدخول (الافتراضي: Log in with $OVERLEAF_OIDC_PROVIDER_NAME).
OVERLEAF_OIDC_PROVIDER_DESCRIPTION
وصف مزوّد OpenID، ويُستخدم في قسم Linked Accounts (الافتراضي: Log in with $OVERLEAF_OIDC_PROVIDER_NAME).
OVERLEAF_OIDC_PROVIDER_INFO_LINK
رابط URL لـ Learn more في وصف مزوّد OpenID، والافتراضي: لا يوجد رابط Learn more في الوصف.
OVERLEAF_OIDC_PROVIDER_HIDE_NOT_LINKED
عدم إظهار مزوّد OpenID في صفحة /user/settings إذا لم يكن حساب المستخدم مرتبطًا به، والافتراضي false.
OVERLEAF_OIDC_USER_ID_FIELD
ستستخدم Overleaf قيمة هذه السمة كمعرّف المستخدم الخارجي، والقيمة الافتراضية هي id. من القيم المعقولة الأخرى الممكنة email وusername (المقابلة لمطالبة OIDC preferred_username).
OVERLEAF_OIDC_ALLOWED_EMAIL_DOMAINS
يقيّد إنشاء الحسابات الفوري (JIT) للمستخدمين الذين يصادقون عبر OIDC. إذا عُيّن إلى قائمة أسماء نطاقات مفصولة بفواصل، فلن يُنشأ حساب جديد إلا إذا تطابق نطاق عنوان البريد الإلكتروني للمستخدم مع أحد النطاقات المدرجة. إذا لم يتطابق النطاق، فيجب على المسؤول إنشاء حساب المستخدم يدويًا باستخدام عنوان البريد الإلكتروني لمستخدم OIDC، إما بكلمة مرور عشوائية قوية أو، وهو الأفضل، بدون الحقل hashedPassword على الإطلاق. يمكن أن تتضمن أسماء النطاقات حرف بدل *. في بدايتها لمطابقة النطاقات الفرعية.
مثال: للسماح بإنشاء الحسابات الفوري للمستخدمين ذوي عناوين بريد إلكتروني مثل name@example.com وname@math.example.com: OVERLEAF_OIDC_ALLOWED_EMAIL_DOMAINS=example.com, *.example.com
مثال: لتعطيل إنشاء الحسابات الفوري تمامًا: OVERLEAF_OIDC_ALLOWED_EMAIL_DOMAINS=
OVERLEAF_OIDC_UPDATE_USER_DETAILS_ON_LOGIN
إذا عُيّن إلى true، يتم تحديث الحقلين first_name وlast_name للمستخدم عند تسجيل الدخول، ويتم تعطيل نموذج بيانات المستخدم في صفحة /user/settings.
عند تعيين متغيري البيئة كليهما، تقوم عملية تسجيل الدخول بتحديث user.isAdmin = true إذا كان الملف الشخصي الذي يعيده مزوّد OpenID يحتوي على السمة المحددة في OVERLEAF_OIDC_IS_ADMIN_FIELD وكانت قيمتها إما تطابق OVERLEAF_OIDC_IS_ADMIN_FIELD_VALUE أو مصفوفة تحتوي على OVERLEAF_OIDC_IS_ADMIN_FIELD_VALUE (على سبيل المثال المطالبة groups)، وإلا فسيتم تعيين user.isAdmin إلى false. إذا كانت قيمة OVERLEAF_OIDC_IS_ADMIN_FIELD هي email، فستُستخدم قيمة السمة emails[0].value للتحقق من المطابقة.
رابط إعادة التوجيه الخاص بمزوّد OpenID لديك هو https://my-overleaf-instance.com/oidc/login/callback.
نموذج لملف variables.env
variables.env
OVERLEAF_APP_NAME="Our Overleaf Instance"ENABLED_LINKED_FILE_TYPES=project_file,project_output_file,url# Enables Thumbnail generation using ImageMagickENABLE_CONVERSIONS=true# Disables email confirmation requirementEMAIL_CONFIRMATION_DISABLED=true## Nginx# NGINX_WORKER_PROCESSES=4# NGINX_WORKER_CONNECTIONS=768## Set for TLS via nginx-proxy# OVERLEAF_BEHIND_PROXY=true# OVERLEAF_SECURE_COOKIE=trueOVERLEAF_SITE_URL=http://my-overleaf-instance.comOVERLEAF_NAV_TITLE=Our Overleaf Instance# OVERLEAF_HEADER_IMAGE_URL=http://somewhere.com/mylogo.pngOVERLEAF_ADMIN_EMAIL=support@example.comOVERLEAF_LEFT_FOOTER=[{"text": "Contact your support team", "url": "mailto:support@example.com"}]OVERLEAF_RIGHT_FOOTER=[{"text":"Hello, I am on the Right", "url":"https://github.com/yu-i-i/overleaf-cep"}]OVERLEAF_EMAIL_FROM_ADDRESS=team@example.comOVERLEAF_EMAIL_SMTP_HOST=smtp.example.comOVERLEAF_EMAIL_SMTP_PORT=587OVERLEAF_EMAIL_SMTP_SECURE=false# OVERLEAF_EMAIL_SMTP_USER=# OVERLEAF_EMAIL_SMTP_PASS=# OVERLEAF_EMAIL_SMTP_NAME=OVERLEAF_EMAIL_SMTP_LOGGER=falseOVERLEAF_EMAIL_SMTP_TLS_REJECT_UNAUTH=trueOVERLEAF_EMAIL_SMTP_IGNORE_TLS=falseOVERLEAF_CUSTOM_EMAIL_FOOTER=This system is run by department xOVERLEAF_PROXY_LEARN=trueNAV_HIDE_POWERED_BY=true################### OIDC for CE ###################EXTERNAL_AUTH=oidcOVERLEAF_OIDC_PROVIDER_ID=oidcOVERLEAF_OIDC_ISSUER=https://keycloak.provider.com/realms/exampleOVERLEAF_OIDC_AUTHORIZATION_URL=https://keycloak.provider.com/realms/example/protocol/openid-connect/authOVERLEAF_OIDC_TOKEN_URL=https://keycloak.provider.com/realms/example/protocol/openid-connect/tokenOVERLEAF_OIDC_USER_INFO_URL=https://keycloak.provider.com/realms/example/protocol/openid-connect/userinfoOVERLEAF_OIDC_LOGOUT_URL=https://keycloak.provider.com/realms/example/protocol/openid-connect/logoutOVERLEAF_OIDC_CLIENT_ID=Overleaf-OIDCOVERLEAF_OIDC_CLIENT_SECRET=DoNotUseThisATGgaAcTgCcATgGATTACAagGtTCaGcGTAGOVERLEAF_OIDC_IDENTITY_SERVICE_NAME='Log in with Keycloak OIDC Provider'OVERLEAF_OIDC_PROVIDER_NAME=OIDC Keycloak ProviderOVERLEAF_OIDC_PROVIDER_INFO_LINK=https://openid.netOVERLEAF_OIDC_IS_ADMIN_FIELD=emailOVERLEAF_OIDC_IS_ADMIN_FIELD_VALUE=overleaf.admin@example.comOVERLEAF_OIDC_UPDATE_USER_DETAILS_ON_LOGIN=false
يشرح هذا الدليل إعدادًا تم اختباره مع goauthentik. استبدل https://overleaf.example.com بقيمة OVERLEAF_SITE_URL الخاصة بك، وhttps://authentik.example.com بعنوان Authentik الخاص بك.
1
أنشئ المزوّد
في Authentik، افتح Applications > Providers، وانقر على New Provider، واختر OAuth2/OpenID Provider ثم انقر على Next.
Client Type: Confidential.
Redirect URIs (ضمن Protocol settings): أضف https://overleaf.example.com/oidc/login/callback مع وضع المطابقة Strict.
انسخ Client ID وClient Secret الآن، إلى OVERLEAF_OIDC_CLIENT_ID وOVERLEAF_OIDC_CLIENT_SECRET.
Authentik: Client ID وClient Secret لمزوّد جديد
يعرض Authentik سرّ العميل (client secret) فقط أثناء إنشاء المزوّد. لاحقًا لا يوفّر نموذج التعديل إلا Modify، الذي يستبدل السرّ بسرّ جديد.
2
أنشئ التطبيق
افتح Applications > Applications، وأنشئ تطبيقًا جديدًا، وامنحه اسمًا وslug، على سبيل المثال overleaf، ثم اختر المزوّد. يصبح الـ slug جزءًا من الـ issuer: https://authentik.example.com/application/o/overleaf/.
يتم تحديث علامة المسؤول عند كل تسجيل دخول عبر OIDC. إذا كان الحقل أو القيمة خاطئًا، فسيفقد كل مسؤول يسجّل الدخول عبر OIDC صلاحيات المسؤول، بما في ذلك المسؤول الذي أُنشئ في launchpad. اختبر الربط أولًا بحساب مسؤول ثانٍ.
ملف variables.env مُختبَر لـ goauthentik
variables.env
EXTERNAL_AUTH=oidcOVERLEAF_OIDC_PROVIDER_ID=authentikOVERLEAF_OIDC_IDENTITY_SERVICE_NAME=Log in with AuthentikOVERLEAF_OIDC_ISSUER=https://authentik.example.com/application/o/overleaf/OVERLEAF_OIDC_AUTHORIZATION_URL=https://authentik.example.com/application/o/authorize/OVERLEAF_OIDC_TOKEN_URL=https://authentik.example.com/application/o/token/OVERLEAF_OIDC_USER_INFO_URL=https://authentik.example.com/application/o/userinfo/OVERLEAF_OIDC_LOGOUT_URL=https://authentik.example.com/application/o/overleaf/end-session/OVERLEAF_OIDC_CLIENT_ID=<Client ID>OVERLEAF_OIDC_CLIENT_SECRET=<Client Secret>OVERLEAF_OIDC_USER_ID_FIELD=usernameOVERLEAF_OIDC_IS_ADMIN_FIELD=groupsOVERLEAF_OIDC_IS_ADMIN_FIELD_VALUE=AdminsOVERLEAF_OIDC_UPDATE_USER_DETAILS_ON_LOGIN=true
آخر تعديل في ٦ أكتوبر ٢٠٢٦
هل كانت هذه الصفحة مفيدة؟
Assistant
Responses are generated using AI and may contain mistakes.