ما هو Logto — وما ليس هو
Logto هو منصة مصادقة تُسلَّم كحزمة تطوير: تدمجها في شيفرة تطبيقك في نحو خمسة عشر سطراً، فتتكفّل بدورة حياة الحسابات كاملة على خادمك أنت. وهذا يختلف عن أداتَي المصادقة الأخريين في كتالوج ServOrbit:
- Authelia يضيف المصادقة الثنائية والدخول الموحّد *أمام* تطبيقات قائمة، عبر التفويض، من دون المساس بشيفرتها — فهو يحمي تطبيقات لا تملك شاشة دخول أصلاً.
- Authentik مزوّد هوية كامل، لتوحيد الدخول إلى أدواتك المستضافة ذاتياً (Grafana وGitea وNextcloud).
- Logto يحلّ محلّ خدمة مصادقة مستضافة: تستدعي حزمته من تطبيقك بلغة React أو Python أو Go، فيدير الحسابات والجلسات والموصلات الاجتماعية والرموز.
إن كنت تبني منتجاً ينشئ فيه المستخدمون حسابات، فـ Logto هو الأداة المناسبة.
المتطلبات
تحتاج خادماً افتراضياً من ServOrbit بذاكرة 2 غيغابايت على الأقل: إذ يتقاسم Logto (Node.js) وPostgreSQL 17 النسخة نفسها. وDocker وDocker Compose مثبّتان مسبقاً في جميع باقات ServOrbit. كما تحتاج اسم نطاق، أو نطاقاً فرعياً، موجّهاً إلى خادمك: فـ Logto يضمّن النطاق العام في كل رمز OIDC يصدره. لذلك يجب تحديد النطاق قبل أول نشر، ولا يمكن تغييره من دون تصفير كل بيانات المستخدمين.
كيف يعمل Logto في الإنتاج
يشغّل Logto حاويتين: db (وهي PostgreSQL 17 للمستخدمين والتطبيقات والجلسات وسجلّ التدقيق) وlogto (وهي Node.js التي تخدم نقطة OIDC على المنفذ 3001 ووحدة الإدارة على المنفذ 3002). ويحوّل الوكيل العكسي nginx على خادمك حركة HTTPS القادمة إلى نطاقك نحو المنفذ 3001 — وهي النقطة التي تصادق عليها تطبيقاتك. أما المنفذ 3002 فمرتبط بالعنوان المحلي فقط، ولا يُبلغ إلا عبر نفق SSH، وهو ما يبقي إدارة قاعدة المستخدمين بعيداً عن الإنترنت العام.
ما يقدّمه Logto فور التثبيت
- رموز مطابقة لـ OIDC/OAuth 2.0 — رموز JWT موقّعة تتحقّق منها أي مكتبة قياسية (passport.js أو python-jose أو go-oidc) من دون شيفرة خاصة.
- موصلات تسجيل دخول اجتماعي — فعّل Google وGitHub وApple وMicrosoft وDiscord ونحو ثلاثين مزوّداً آخر من وحدة الإدارة بنقرة واحدة؛ ويحتاج كل منها إلى تصريح OAuth من دقائق لدى المزوّد.
- مصادقة بلا كلمة مرور — روابط سحرية بالبريد أو رموز لمرة واحدة بالرسائل القصيرة (Twilio أو SendGrid أو Mailgun)، من دون صيانة خدمة إشعارات منفصلة.
- المصادقة الثنائية — رموز TOTP (Google Authenticator وAuthy)، ومفاتيح عتادية بمعيار WebAuthn/FIDO2، ورموز احتياطية، تُفرض بسياسة من وحدة الإدارة.
- التحكّم بالوصول حسب الأدوار — عرّف الأدوار والصلاحيات في وحدة الإدارة، واستقبلها ضمن مطالبة
scopeفي رمز JWT، وطبّقها في واجهتك البرمجية بسطر وسيط واحد. - حزم تطوير لأكثر من عشرين إطاراً — React وNext.js وVue وAngular وReact Native وFlutter وPython وFastAPI وGo وPHP وLaravel و.NET وJava وSpring Boot وغيرها.
النشر بنقرة واحدة مع ServOrbit
من مساحتك في ServOrbit: Marketplace ← الأمن ← Logto ← نشر. اختر حجم الخادم (2 غيغابايت من الذاكرة كحدّ أدنى)، وخصّص نطاقاً، ثم أطلق النشر. يهيّئ ServOrbit الخادم، ويضبط مضيف nginx الافتراضي لنطاقك، ويولّد بيانات اعتماد قاعدة البيانات ومفتاح SECRET_VAULT_KEK (بمعيار AES-256، لتخزين الحقول الحسّاسة مشفّرة)، ويشغّل المكدّس بحاويتيه. وتستجيب وثيقة اكتشاف OIDC على https://votre-domaine/.well-known/openid-configuration في أقل من دقيقة.
أول إدارة عبر نفق SSH
تستمع وحدة الإدارة على المنفذ 3002، وهو مرتبط بالعنوان المحلي لأسباب أمنية. افتح نفق SSH من جهازك بالأمر ssh -L 3002:127.0.0.1:3002 root@ip-de-votre-vps.
ثم افتح http://localhost:3002/console في متصفحك. يطلب معالج أول تشغيل عنوان المدير وكلمة مروره، ثم ينقلك إلى لوحة المعلومات. وهي عملية تُجرى مرة واحدة: بعدها لن تفتح النفق إلا لإدارة تطبيقاتك أو مستخدميك.
دمج Logto في تطبيق Next.js
ثبّت حزمة التطوير بالأمر npm install @logto/next، ثم أنشئ ملف logto.ts يصدّر new LogtoClient({ … }) مضبوطاً بـ endpoint (عنوان نسخة Logto لديك) وappId وappSecret (من وحدة إدارة Logto) وbaseUrl (عنوان تطبيقك) وcookieSecret وcookieSecure.
ولحماية مسار، استدعِ getLogtoContext({ getAccessToken: true }) المستورد من @logto/next/server-component: فهو يعيد isAuthenticated ومطالبات المستخدم. وإن كانت isAuthenticated غير محقّقة فأعد التوجيه إلى /api/logto/sign-in، وإلا فاعرض الصفحة اعتماداً على المطالبات الواردة.
هذا كل الدمج: نحو خمسة عشر سطراً من الإعداد، واستيراد واحد، وحارس واحد.
تفعيل الدخول عبر Google
في وحدة تحكّم Google Cloud، أنشئ معرّف عميل OAuth 2.0 من نوع تطبيق ويب. اضبط عنوان إعادة التوجيه المصرّح به على https://votre-domaine-logto.com/callback/google، ثم انسخ معرّف العميل وسرّه.
وفي وحدة إدارة Logto ← الموصلات ← الموصلات الاجتماعية ← Google ← تفعيل. ألصق المعرّف والسرّ ثم احفظ. يظهر Google عندئذ خياراً للدخول في صفحة Logto لديك، من دون أي تعديل في شيفرة تطبيقك.
استراتيجية النسخ الاحتياطي
يحفظ Logto حالته كلها في وحدة تخزين PostgreSQL باسم logto_db. انسخها احتياطياً بمهمة pg_dump مجدولة، أو اربط الوحدة بنسخة Backrest (وهي أيضاً في كتالوج ServOrbit) للحصول على نسخ آلية مشفّرة ومزالة التكرار نحو S3 أو Backblaze B2 أو SFTP. فقدان وحدة logto_db يعني فقدان كل حسابات المستخدمين وإعدادات التطبيقات وسجلّ التدقيق — انسخها قبل أي ترحيل للخادم.
أول تسجيل دخول
أول تسجيل دخول
لوحة الإدارة غير منشورة على الإنترنت: افتحوا أولاً نفقاً عبر SSH بالأمر ssh -L 3002:127.0.0.1:3002 root@<IP>، ثم انتقلوا إلى العنوان http://localhost:3002. انقروا على «Create account» — إذ لا توجد أي بيانات دخول افتراضية.