داخليًا، تستخدم وحدة SAML في Overleaf مكتبة passport-saml، وتُمرَّر معظم خيارات الإعداد التالية إلى passport-saml. إذا واجهت مشكلات في إعداد SAML، فمن المفيد قراءة ملف README الخاص بـ passport-saml لتكوين فكرة عن الإعدادات التي تتوقعها.متغير البيئة EXTERNAL_AUTH مطلوب لتفعيل وحدة مصادقة SAML. يحدد هذا المتغير طرق المصادقة الخارجية المفعّلة. قيمة هذا المتغير عبارة عن قائمة. إذا تضمنت القائمة saml، فسيتم تفعيل مصادقة SAML.على سبيل المثال: EXTERNAL_AUTH=ldap samlعند استخدام طريقة مصادقة SAML، تتم إعادة توجيه المستخدم إلى موقع المصادقة الخاص بمزوّد الهوية (IdP). إذا نجح مزوّد الهوية في مصادقة المستخدم، يتم البحث في قاعدة بيانات مستخدمي Overleaf عن سجل يحتوي على حقل samlIdentifiers بالبنية التالية:
يجب أن يطابق externalUserId قيمة الخاصية المحددة في userIdAttribute في الملف الشخصي للمستخدم الذي يعيده خادم مزوّد الهوية.إذا لم يُعثر على سجل مطابق، يتم البحث في قاعدة البيانات عن مستخدم يطابق عنوان بريده الإلكتروني الأساسي البريد الإلكتروني الموجود في الملف الشخصي للمستخدم لدى مزوّد الهوية:
إذا عُثر على مثل هذا المستخدم، يُحذف الحقل hashedPassword لتعطيل المصادقة المحلية، ويُضاف الحقل samlIdentifiers.
إذا لم يُعثر على مستخدم مطابق، يتم إنشاء مستخدم جديد بعنوان البريد الإلكتروني وsamlIdentifiers من الملف الشخصي لدى مزوّد الهوية.
ملاحظة: حاليًا، لا يُدعم سوى مزوّد هوية SAML واحد. الحقل providerId في samlIdentifiers مثبّت على القيمة '1'.
مثال Azure: https://login.microsoftonline.com/8b26b46a-6dd3-45c7-a104-f883f4db1f6b/saml2
OVERLEAF_SAML_ISSUER(مطلوب)
اسم المُصدِر (Issuer).
OVERLEAF_SAML_AUDIENCE
الجمهور (Audience) المتوقع في استجابة SAML، والقيمة الافتراضية هي قيمة OVERLEAF_SAML_ISSUER.
OVERLEAF_SAML_IDP_CERT(مطلوب)
مسار ملف يحتوي على الشهادة العامة لمزوّد الهوية، وتُستخدم للتحقق من تواقيع استجابات SAML الواردة. إذا كان لدى مزوّد الهوية عدة شهادات توقيع صالحة، فيمكن أن تكون القيمة مصفوفة JSON من مسارات الشهادات.
مثال (شهادة واحدة): /var/lib/overleaf/certs/idp_cert.pem
مثال (عدة شهادات): ["var/lib/overleaf/certs/idp_cert.pem", "/var/lib/overleaf/certs/idp_cert_old.pem"]
OVERLEAF_SAML_PUBLIC_CERT
مسار ملف يحتوي على شهادة التوقيع العامة التي تُضمَّن في طلبات المصادقة لكي يتمكن مزوّد الهوية من التحقق من تواقيع طلب SAML الوارد. وهي مطلوبة عند إعداد نقطة نهاية البيانات الوصفية عندما تكون الاستراتيجية مهيأة باستخدام OVERLEAF_SAML_PRIVATE_KEY. يمكن توفير مصفوفة JSON من مسارات الشهادات لدعم تدوير الشهادات. عند توفير مصفوفة من الشهادات، يجب أن يطابق الإدخال الأول في المصفوفة قيمة OVERLEAF_SAML_PRIVATE_KEY الحالية. ويمكن استخدام الإدخالات الإضافية في المصفوفة لنشر الشهادات القادمة لدى مزوّدي الهوية قبل تغيير OVERLEAF_SAML_PRIVATE_KEY.
OVERLEAF_SAML_PRIVATE_KEY
مسار ملف يحتوي على مفتاح خاص بصيغة PEM مطابق لـ OVERLEAF_SAML_PUBLIC_CERT، ويُستخدم لتوقيع طلبات المصادقة التي يرسلها passport-saml.
مسار ملف يحتوي على مفتاح خاص مطابق لـ OVERLEAF_SAML_DECRYPTION_CERT، وسيُستخدم لمحاولة فك تشفير أي تأكيدات (assertions) مشفّرة يتم استلامها.
OVERLEAF_SAML_SIGNATURE_ALGORITHM
يعيّن اختياريًا خوارزمية التوقيع لتوقيع الطلبات، والقيم الصالحة هي ‘sha1’ (الافتراضية) و’sha256’ (المفضّلة) و’sha512’ (الأكثر أمانًا، تحقق مما إذا كان مزوّد الهوية لديك يدعمها).
OVERLEAF_SAML_ADDITIONAL_PARAMS
قاموس JSON من معاملات الاستعلام الإضافية التي تُضاف إلى جميع الطلبات.
OVERLEAF_SAML_ADDITIONAL_AUTHORIZE_PARAMS
قاموس JSON من معاملات الاستعلام الإضافية التي تُضاف إلى طلبات ‘authorize’.
مثال: {"some_key": "some_value"}
OVERLEAF_SAML_IDENTIFIER_FORMAT
صيغة معرّف الاسم المطلوب من مزوّد الهوية (الافتراضي: urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress). إذا كنت تستخدم urn:oasis:names:tc:SAML:2.0:nameid-format:persistent، فتأكد من تعريف متغير البيئة OVERLEAF_SAML_EMAIL_FIELD. إذا كانت urn:oasis:names:tc:SAML:2.0:nameid-format:transient مطلوبة، فيجب عليك أيضًا تعريف متغير البيئة OVERLEAF_SAML_USER_ID_FIELD، الذي يمكن تعيينه مثلًا إلى عنوان البريد الإلكتروني للمستخدم.
OVERLEAF_SAML_ACCEPTED_CLOCK_SKEW_MS
مقدار انحراف الساعة المقبول بالمللي ثانية بين العميل والخادم عند التحقق من صلاحية الطوابع الزمنية لشرطي التأكيد OnBefore وNotOnOrAfter. يؤدي تعيين القيمة إلى -1 إلى تعطيل التحقق من هذه الشروط بالكامل. القيمة الافتراضية هي 0.
OVERLEAF_SAML_ATTRIBUTE_CONSUMING_SERVICE_INDEX
السمة AttributeConsumingServiceIndex التي تُضاف إلى AuthnRequest لإرشاد مزوّد الهوية إلى مجموعة السمات التي يجب إرفاقها بالاستجابة (رابط).
إذا كانت القيمة true، فإن طلب SAML الأولي من مزوّد الخدمة يحدد أنه يجب على مزوّد الهوية فرض إعادة مصادقة المستخدم، حتى لو كانت لديه جلسة صالحة.
OVERLEAF_SAML_DISABLE_REQUESTED_AUTHN_CONTEXT
إذا كانت القيمة true، فلا يُطلب سياق مصادقة محدد. على سبيل المثال، يمكنك تعيين هذا إلى true للسماح بسياقات إضافية مثل تسجيل الدخول بدون كلمة مرور (urn:oasis:names:tc:SAML:2.0:ac:classes:X509). يعتمد دعم السياقات الإضافية على مزوّد الهوية لديك.
OVERLEAF_SAML_AUTHN_REQUEST_BINDING
إذا عُيّن إلى HTTP-POST، فسيتم طلب المصادقة من مزوّد الهوية عبر ربط HTTP POST، وإلا فالقيمة الافتراضية هي HTTP-Redirect.
OVERLEAF_SAML_VALIDATE_IN_RESPONSE_TO
إذا كانت القيمة always، فسيتم التحقق من InResponseTo في استجابات SAML الواردة.
إذا كانت القيمة never، فلن يتم التحقق من InResponseTo (الافتراضي).
إذا كانت القيمة ifPresent، فلن يتم التحقق من InResponseTo إلا إذا كان موجودًا في استجابة SAML الواردة.
عند تعيينهما إلى true (الافتراضي)، تتوقع Overleaf أن تكون تأكيدات SAML، وكذلك استجابة مصادقة SAML بأكملها على التوالي، موقّعة من مزوّد الهوية. عندما يكون كلا الخيارين false، يجب أن تكون التأكيدات أو الاستجابة موقّعة على الأقل.
OVERLEAF_SAML_REQUEST_ID_EXPIRATION_PERIOD_MS
يحدد مدة الصلاحية التي بعدها لا يعود معرّف الطلب (Request ID) المُنشأ لطلب SAML صالحًا إذا ظهر في الحقل InResponseTo في استجابة SAML. الافتراضي: 28800000 (8 ساعات).
OVERLEAF_SAML_LOGOUT_URL
العنوان الأساسي الذي تُرسل إليه طلبات تسجيل الخروج (الافتراضي: entryPoint).
عند تعيين متغيري البيئة كليهما، تقوم عملية تسجيل الدخول بتحديث user.isAdmin = true إذا كان الملف الشخصي الذي يعيده مزوّد هوية SAML يحتوي على السمة المحددة في OVERLEAF_SAML_IS_ADMIN_FIELD وكانت قيمتها إما تطابق OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE أو مصفوفة تحتوي على OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE، وإلا فسيتم تعيين user.isAdmin إلى false. إذا لم يُعيَّن أي من هذين المتغيرين، فلن تُعيَّن حالة المسؤول إلى true إلا أثناء إنشاء المستخدم المسؤول في Launchpad.
البيانات الوصفية لمزوّد الهويةيتضمن الإصدار الحالي من Overleaf CE نقطة نهاية لاسترداد البيانات الوصفية لمزوّد الخدمة: http://my-overleaf-instance.com/saml/metaيجب تهيئة مزوّد الهوية للتعرّف على خادم Overleaf بوصفه “مزوّد خدمة” (Service Provider). راجع توثيق خادم SAML لديك للحصول على تعليمات حول كيفية القيام بذلك.فيما يلي مثال على بيانات وصفية مناسبة لمزوّد الخدمة:
لاحظ الشهادات وAssertionConsumerService.Location وSingleLogoutService.Location وEntityDescriptor.entityID، وعيّنها بما يناسب في إعدادات مزوّد الهوية لديك، أو أرسل ملف البيانات الوصفية إلى مسؤول مزوّد الهوية.
نموذج لملف 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################### SAML ###################EXTERNAL_AUTH=samlOVERLEAF_SAML_ISSUER=MyOverleafOVERLEAF_SAML_IDENTITY_SERVICE_NAME='Log in with SAML Provider'OVERLEAF_SAML_EMAIL_FIELD=EmailOVERLEAF_SAML_FIRST_NAME_FIELD=DisplayNameOVERLEAF_SAML_LAST_NAME_FIELD=DisplayNameOVERLEAF_SAML_ENTRYPOINT=http://localhost:18000/login/saml/authorize/admin/SAML_OverleafOVERLEAF_SAML_IDP_CERT=/var/lib/overleaf/certs/idp_cert.pemOVERLEAF_SAML_SIGNATURE_ALGORITHM=
يشرح هذا الدليل إعدادًا تم اختباره مع goauthentik. استبدل https://overleaf.example.com بقيمة OVERLEAF_SITE_URL الخاصة بك، وhttps://authentik.example.com بعنوان Authentik الخاص بك.
1
أنشئ المزوّد والتطبيق
في Authentik، افتح Applications > Applications وانقر على New Application. ينشئ المعالج التطبيق والمزوّد الخاص به معًا.1. امنح التطبيق اسمًا وslug، على سبيل المثال overleaf، ثم انقر على Next:
EntityID/Issuer ضمن SAML Configuration هو اسم Authentik نفسه. لا تضعه في OVERLEAF_SAML_ISSUER، بل استخدم Audience.
3
ثبّت شهادة التوقيع
انقر على Download تحت Download signing certificate واحفظ الملف باسم data/overleaf/certs/idp_cert.pem في مجلد Toolkit الخاص بك. تراه الحاوية على أنه /var/lib/overleaf/certs/idp_cert.pem:
يتم تحديث علامة المسؤول عند كل تسجيل دخول عبر SAML. إذا كان الحقل أو القيمة خاطئًا، فسيفقد كل مسؤول يسجّل الدخول عبر SAML صلاحيات المسؤول. اختبر الربط أولًا بحساب مسؤول ثانٍ.
ملف variables.env مُختبَر لـ goauthentik
variables.env
EXTERNAL_AUTH=samlOVERLEAF_SAML_IDENTITY_SERVICE_NAME=Log in with AuthentikOVERLEAF_SAML_ENTRYPOINT=https://authentik.example.com/application/saml/overleaf/OVERLEAF_SAML_LOGOUT_URL=https://authentik.example.com/application/saml/overleaf/OVERLEAF_SAML_ISSUER=overleafOVERLEAF_SAML_IDP_CERT=/var/lib/overleaf/certs/idp_cert.pemOVERLEAF_SAML_WANT_ASSERTIONS_SIGNED=trueOVERLEAF_SAML_WANT_AUTHN_RESPONSE_SIGNED=trueOVERLEAF_SAML_USER_ID_FIELD=http://schemas.goauthentik.io/2021/02/saml/usernameOVERLEAF_SAML_EMAIL_FIELD=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddressOVERLEAF_SAML_FIRST_NAME_FIELD=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameOVERLEAF_SAML_LAST_NAME_FIELD=http://schemas.goauthentik.io/2021/02/saml/usernameOVERLEAF_SAML_IS_ADMIN_FIELD=http://schemas.xmlsoap.org/claims/GroupOVERLEAF_SAML_IS_ADMIN_FIELD_VALUE=AdminsOVERLEAF_SAML_UPDATE_USER_DETAILS_ON_LOGIN=true
آخر تعديل في ٦ أكتوبر ٢٠٢٦
هل كانت هذه الصفحة مفيدة؟
Assistant
Responses are generated using AI and may contain mistakes.