انتقل إلى المحتوى

المصادقة

قم بتكوين المصادقة المحلية وتسجيل الدخول الاختياري لـ OpenID Connect واسترداد الحساب.

لقطة المصدر المؤرشفة. تستخدم ملصقات المنتجات Repovio. استخدم معرفات التكوين ومراجع الحاوية من ملفات النشر ذات العلامات لهذا الإصدار دون تغيير.

الإعداد للتشغيل لأول مرة

بعد نشر التثبيت الجديد، افتح عنوان URL العام الخاص به. يقوم Repovio بإعادة توجيه كل طلب إلى /auth/setup حتى يوجد الحساب الأول. أدخل الاسم الأول والأخير الاختياري، واسم مستخدم فريد، وكلمة مرور مكونة من 12 حرفًا على الأقل. يتم إنشاء الحساب كمسؤول النظام وتسجيل الدخول على الفور.

يمكن أن ينجح الإعداد مرة واحدة فقط. بعد وجود المستخدم الأول، يقوم /auth/setup بإعادة التوجيه إلى /auth/signin. تحتفظ عمليات التثبيت الموجودة بمستخدميها الحاليين أثناء الترقيات ولا تعرض الإعداد مرة أخرى.

OpenID Connect لتسجيل الدخول الموحد

يدعم Repovio موفر OpenID Connect الاختياري بالإضافة إلى تسجيل الدخول المحلي. يقوم مسؤول النظام بتكوينه ضمن الإعدادات → المصادقة. تسجيل الدخول هذا منفصل عن موفر GitHub وGitLab وForgejo وGitea OAuth: OIDC يحدد مستخدم Repovio، بينما يمنح الموفر OAuth حق الوصول للقراءة إلى موارد الموفر فقط.

قم بتعيين عنوان URL الدقيق لرد اتصال واجهة برمجة التطبيقات (API) الذي يمكن الوصول إليه خارجيًا قبل تكوين الموفر:

PUBLIC_URL=https://repovio.example.com
OIDC_CALLBACK_URL=https://repovio.example.com/api/v1/auth/oidc/callback

قم بتسجيل قيمة OIDC_CALLBACK_URL كعنوان URI لإعادة التوجيه المسموح به لدى موفر الهوية. قم بتكوين جهة الإصدار ومعرف العميل وسر العميل الاختياري والنطاقات والمطالبة الجماعية في Repovio. تقبل واجهة برمجة التطبيقات (API) سر العميل عند الحفظ ولكنها لا تُرجع قيمته مطلقًا. يتم تشفيره أثناء الراحة باستخدام TOKEN_ENCRYPTION_KEY. احفظ التكوين قبل استخدام التحقق من الاتصال؛ تؤدي التغييرات غير المحفوظة إلى تعطيل هذا الفحص. تأكد من نجاح الاكتشاف قبل الاعتماد على تسجيل الدخول OIDC.

HTTPS مطلوب للمصدر ونقاط النهاية الخاصة به. السماح لمصدر HTTP مخصص فقط لشبكات المختبرات المعزولة؛ ويجب ألا يتم تمكينه مطلقًا للنشر الذي يمكن الوصول إليه عبر الإنترنت. يظل تسجيل الدخول بكلمة المرور المحلية متاحًا كمسار استرداد حتى عند تمكين OIDC.

يعرض النموذج أيضًا عنوان URL لرد الاتصال للنسخ والمجموعات التي تم تكوينها/مراقبتها وعناصر تحكم منفصلة لاستبدال سر العميل المخزن أو مسحه. يؤدي ترك الاستبدال معطلاً إلى الحفاظ على السر المحفوظ. يتم الإبلاغ عن حالات فشل التحميل والحفظ والتحقق من الاتصال بشكل منفصل. أصلح التكوين غير الصالح واحفظه مرة أخرى قبل إعادة محاولة التحقق من الاتصال.

المجموعات والأدوار والهويات

يمكن أن تكون مطالبة المجموعة عبارة عن اسم مطالبة محدد أو مسار مفصول بنقاط مثل realm_access.groups. قم بتكوين قيم المجموعة الدقيقة والحساسة لحالة الأحرف لأدوار Repovio الثلاثة. إذا تطابقت عدة مجموعات، فإن Repovio يطبق SYSTEM_ADMIN، ثم MANAGER، ثم VIEWER. يتم رفض مطالبات المجموعة غير المتطابقة أو المشوهة أو المفقودة أو الكبيرة جدًا ما لم يتم تمكين السماح للمستخدمين غير المتطابقين كمشاهدين بشكل صريح.

يتم ربط حساب OIDC فقط بواسطة المُصدر المعتمد وزوج الموضوع. لا يربط Repovio أبدًا تسجيل دخول OIDC بحساب محلي عن طريق عنوان البريد الإلكتروني أو اسم المستخدم. تتم مزامنة الأسماء الأولى والأخيرة من المطالبات التي تم التحقق منها عند كل تسجيل دخول ناجح؛ لا يمكن تغيير اسم تسجيل الدخول وأسماء ملفات التعريف وكلمة المرور محليًا. تظل عضويات المستودع مُدارة في Repovio ولا يتم اشتقاقها مطلقًا من مجموعات موفري الهوية.

تؤدي تغييرات الإعدادات المتعلقة بالأمان أو تغييرات الأدوار إلى إبطال رموز OIDC الحالية. لا يؤدي تغيير اسم العرض الخاص بالموفر فقط إلى إبطال رموز OIDC الحالية. يؤدي تعطيل مجموعة لدى موفر الهوية أو إزالتها إلى منع الحساب المتأثر من إنشاء جلسة جديدة، وإبطال جلساته السابقة بعد محاولة تسجيل الدخول المرفوضة التالية.

أمثلة للموفرين

بالنسبة إلى Authentik، قم بإنشاء موفر OAuth2/OpenID مع تدفق كود التفويض، وعنوان URL الدقيق لرد الاتصال أعلاه، ونطاقات openid، وprofile، وemail. قم بإضافة تعيين نطاق يقوم بإرجاع مطالبة المجموعة المختارة كمصفوفة من أسماء المجموعات، وقم بإرفاق الموفر بالتطبيق، ثم انسخ مصدر التطبيق ومعرف العميل وسر العميل إلى Repovio.

بالنسبة لموفر آخر متوافق مع المعايير، قم بتمكين تدفق رمز التفويض، واشترط S256 PKCE، وقم بتسجيل عنوان URL الدقيق لرد الاتصال، وقم بتضمين sub ثابت بالإضافة إلى مطالبة المجموعة التي تم تكوينها في رمز المعرف أو استجابة UserInfo. يقبل Repovio فقط التوقيعات غير المتماثلة لرمز التعريف ويرفض الرموز المميزة غير الموقعة والموقعة بواسطة HMAC.

عقد OIDC API

الطريقةالمسارالوصولالغرض
GET/api/v1/auth/oidc/statusعامإرجاع التوفر الفعال واسم الموفر الاختياري فقط.
GET/api/v1/auth/oidc/startعاميبدأ رمز التفويض المرتبط بالمتصفح ومعاملة S256 PKCE.
GET/api/v1/auth/oidc/callbackعامالتحقق من صحة استجابة الموفر وإعادة التوجيه باستخدام رمز جزء لمرة واحدة.
POST/api/v1/auth/oidc/exchangeعاميستهلك رمز الجزء مرة واحدة ويعيد الحامل العادي AuthResult.
GET، PUT/api/v1/auth/oidc/configمسؤول النظاميقرأ أو يقوم بتحديث إعدادات OIDC السرية والآمنة.
POST/api/v1/auth/oidc/checkمسؤول النظامالتحقق من تكوين الاكتشاف المحفوظ دون تغييره.

لا يضع رد الاتصال مطلقًا حامل JWT في عنوان URL. تنتهي صلاحية رمز التبادل غير الشفاف الخاص به بعد 60 ثانية ويمكن استخدامه مرة واحدة فقط. يتم تقليل أخطاء الموفر إلى رموز خطأ مستقرة قبل أن تصل إلى المتصفح أو السجلات.

تغيير كلمة المرور الخاصة بك

أثناء تسجيل الدخول، افتح الإعدادات → عام → تغيير كلمة المرور. أدخل كلمة المرور الحالية وكلمة المرور الجديدة وتأكيدها. يحافظ Repovio على تسجيل دخول المتصفح الحالي باستخدام رمز وصول بديل ويبطل الرموز المميزة التي تحتفظ بها كل جلسة تسجيل دخول أخرى.

إعادة تعيين كلمة المرور المنسية

Repovio لم تتم إعادة تعيين كلمة المرور عبر البريد الإلكتروني عمدًا. يمكن لمسؤول النشر إعادة تعيين حساب محلي من الدليل الذي يحتوي على compose.yml. اقرأ كلمة المرور البديلة دون تكرارها أو تخزينها في سجل الصدفة، ثم أرسلها إلى حاوية API عبر الإدخال القياسي:

read -rsp 'New Repovio password: ' REPOVIO_NEW_PASSWORD
printf '\n'
printf '%s\n' "$REPOVIO_NEW_PASSWORD" \
  | docker compose exec -T api node dist/scripts/reset-password.js USERNAME
unset REPOVIO_NEW_PASSWORD

استبدل USERNAME باسم المستخدم الدقيق لتسجيل الدخول. يتطلب الأمر كلمة مرور تتراوح بين 12 و256 حرفًا، ويقوم بتحديث هذا الحساب المحلي فقط، ويبطل كافة رموز الوصول الموجودة الخاصة به. قم بتسجيل الدخول مرة أخرى باستخدام كلمة المرور الجديدة بعد ذلك. يرفض الأمر الحسابات المُدارة بواسطة OIDC لأنها لا تحتوي على كلمة مرور محلية.