يقدم Logto v1.42.0 ملفات التحقق من النطاق المخصص، وقوائم السماح للبريد الإلكتروني بنمط البدل، وروابط سحرية لإعادة تعيين كلمة المرور، و webhook جديد Grant.LimitExceeded، وتحديث كبير في طبقة البروتوكول باستخدام node-oidc-provider v9 و Koa 3 مع تفعيل حماية SSRF بشكل افتراضي.
SimengDeveloper
توقف عن إضاعة أسابيع في مصادقة المستخدم
أطلق تطبيقات آمنة بشكل أسرع مع Logto. قم بدمج مصادقة المستخدم في دقائق وركز على منتجك الأساسي.
Logto v1.42.0 هو إصدار يركّز على النطاقات والبروتوكولات. يمنح الفرق طريقة لإثبات ملكية النطاق بدون الحاجة لاستضافة إضافية، وتحكم أدق في عناوين البريد الإلكتروني المسموح لها بالانضمام إلى المستأجر، ومسار أسهل لإعادة تعيين كلمة المرور للمستخدمين النهائيين. تحت الغطاء، ينقل Logto إلى node-oidc-provider v9 و Koa 3، ويشغّل حماية SSRF لطلبات OIDC الصادرة بشكل افتراضي. إليك كل ما هو جديد.
غالبًا ما تتحقق الخدمات الخارجية من ملكية النطاق بطلب تقديم ملف صغير في مسار محدد. سابقًا كان ذلك يتطلب استضافة منفصلة بجانب نطاقك المخصص في Logto.
الآن يمكنك إرفاق ملفات تحقق إلى نطاق مخصص نشط من الإعدادات > إعدادات المستأجر > النطاقات عبر الكونسول. كل ملف يحتوي على:
مسار يكون إما اسم ملف في الجذر مع امتداد (مثال /verify.txt) أو ضمن المسار /.well-known/.
نوع محتوى text/plain أو application/json. يتم التحقق من صحة محتوى JSON عند الحفظ.
حجم المحتوى يصل إلى 16 كيلوبايت.
يمكن تكوين حتى 10 ملفات لكل نطاق، ويجب أن تكون المسارات فريدة. يقدم Logto طلبات GET و HEAD المطابقة تمامًا مع نوع المحتوى المضبوط وتعزيز في الردود. دائمًا ما تكون مسارات Logto الحقيقية أولوية على ملفات التحقق من نفس المسار، لذا لن يحجب ملف تم تكوينه بشكل خاطئ أي نقطة نهاية حقيقية. تجربة الكونسول مترجمة لكل اللغات المدعومة.
لأن Logto لا يتدخل في محتوى الملفات، هذا يعمل مع أي مزود ووفق أي آلية تحقق بدون حاجة لتكييف Logto مع كل مزود.
قواعد وصول البريد الإلكتروني: قوائم السماح وأنماط البدل#
تطورت سياسة قائمة الحظر للبريد الإلكتروني لتشمل مجموعة أوسع من قواعد وصول البريد الإلكتروني، تُعدّل في الكونسول > الأمان > قائمة حظر البريد الإلكتروني.
قائمة سماح مخصصة للبريد الإلكتروني. يمكنك تهيئة قائمة سماح لعناوين بريد إلكتروني أو نطاقات أو أنماط بالبدل. عند تفعيل القائمة، يُقبل فقط البريد الإلكتروني المطابق لعمليات التسجيل الجديدة وربط العناوين — سواء في التسجيل أو تحديث حساب البريد الإلكتروني.
أنماط البدل. تدعم قوام السماح والحظر أنماط البريد والنطاق بالبدل، مثل foo*@example.com، *@example.com و @*.example.com، بالإضافة للعناوين الدقيقة ([email protected]) والنطاقات (@example.com).
تحذيرات التعارض. ينبه الكونسول إذا كان مدخل في القائمة البيضاء يتعارض مع قاعدة في الحظر، أو يستخدم علامة + مع تعطيل ميزة العناوين الفرعية، أو إذا كانت القواعد لن تسمح بأي بريد جديد.
تتم مشاركة منطق المطابقة والتحقق عبر أدوات قابلة لإعادة الاستخدام في @logto/core-kit، لذلك تطبق نفس القواعد في كل مكان يدخل فيه بريد إلكتروني إلى المستأجر.
تدعم الآن تطبيق تجربة المستخدم مسارات إعادة تعيين كلمة المرور التي تتحقق من روابط سحرية لمرة واحدة مباشرة من صفحة إعادة تعيين كلمة المرور، بالإضافة إلى رموز التحقق.
عندما يتم حذف منح OIDC بسبب تجاوز التطبيق حد المنح المسموح بها، يطلق Logto الآن حدث webhook جديد Grant.LimitExceeded، ويمكن اختياره في إعدادات Webhook بالكونسول مثل بقية الأحداث.
تقارير الحمولة تشمل userId، applicationId، revokedGrantIds، maxAllowedGrants، و preRevocationActiveGrantCount. تم إرسال الحدث باستراتيجية fire-and-forget: يتم تسجيل الفشل في سجل تدقيق TriggerHook.Grant.LimitExceeded ولا يؤثر على استجابة المصادقة.
عند إلغاء رمز وصول opaque، يتم أيضًا إلغاء جميع الرموز الأخرى التي تقع ضمن نفس المنحة، بما فيها رمز التحديث. في v8، كان رمز التحديث يبقى صالحًا بعد الإلغاء ويمكنه طلب رموز وصول جديدة.
مستجدات أخرى في البروتوكول في v9:
نقطة نهاية الإلغاء الآن ترفض رموز وصول JWT مع unsupported_token_type، بدلًا من إعادة نجاح وهمي كما في v8.
نقطة نهاية بيانات تعريف المزود وفق RFC 8414 متاحة الآن عبر /oidc/.well-known/oauth-authorization-server.
تمت إزالة الادعاء الزائد at_hash من رموز ID التي تصدر عند نقطة نهاية الرموز.
لم تعد رموز ID تحتوي على العنوان الاختياري typ: "JWT". OpenID Connect يعرف رموز ID كـ JWT ولا يطلب من العملاء التحقق من هذا العنوان.
إجراء مطلوب للتحقق المخصص من رموز ID. لا حاجة لأي إجراء عند استخدام SDK الرسمي. إذا كان تكاملك يقوم بالتحقق المخصص من رموز ID، حدثه لقبول غياب ادعاء at_hash وغياب العنوان typ: "JWT".
يعمل Logto الآن على Koa 3 التي يتم تحديثها بشكل نشط وتحصل أولًا على تصحيحات الأمان. لا يتوقع أي تغيير في السلوك: جميع نقاط النهاية وتدفقات OIDC واستجابات API تعمل كما كانت.
عندما ترفض قواعد وصول البريد تسجيل اجتماع اجتماعي أو SSO، إعادة الخطأ الآن تعيد المستخدم إلى صفحة تسجيل دخول Logto بدلًا من العودة للمزود الخارجي.
تم تفعيل المصادقة متعددة العوامل تلقائيًا بعد إضافة عامل جديد عبر Account API.
عند إنشاء موصل بريد إلكتروني أو SMS جديد، يتم تنفيذ الإدخال وتنظيف الموصلات القديمة في معاملة قاعدة بيانات واحدة. سابقًأ كان احتمال حدوث تكرار عند توقف التطبيق بين التنفيذين.
الآن يتم فك ترميز بيانات اعتماد Redis cluster، ما يضمن نجاح الاتصال إذا كان اسم المستخدم أو كلمة المرور يحتويان على رموز محجوزة للروابط.
تم تفعيل TLS بشكل صحيح لاتصالات Redis cluster التي تستخدم بروتوكول rediss.
jose v6: أصبحت موصلات Apple و Google و OAuth و OIDC الآن تستخدم jose 6 الذي يعمل على Web Crypto API بدلًا من وحدة crypto في Node. يظل توقيع الرموز والتحقق منها مطابق للسابق.
GitLab: تم إزالة تبعية jose غير المستخدمة، ليصبح تثبيت الموصل لا يحمل حزمة لم تُستخدم أصلًا.
Aliyun SMS: يعامل الآن أرقام هواتف هونغ كونغ كأرقام خارجية.
خدمة المصادقة عبر Aliyun SMS (MAS): يمكن الآن إدخال التوقيع كنص حر بدلًا من قائمة منسدلة، لتستمر الخدمة عند تبديل التواقيع.
إجراء مطلوب — حماية SSRF لمزود OIDC. أصبح أمان الطلبات الصادرة أقوى وحماية SSRF مفعلة افتراضيًا. يجب على النشر الذاتي الذي يحتاج للوصول لعناوين موثوقة داخل شبكات خاصة ضبط المتغير OIDC_PROVIDER_SSRF_PROTECTION_DISABLED=true قبل تشغيل Logto؛ غير ذلك اترك المتغير بدون تعيين.
مطلوب ترحيل قاعدة البيانات. يجلب هذا الإصدار تعديلات في المخطط لملفات التحقق من النطاق المخصص، بالإضافة إلى مؤشرات وجداول داخلية. بعد الترقية، نفّذ أمر تعديل قاعدة البيانات (npm run alteration deploy داخل صورة @logto/cli/core أو logto db alteration deploy) قبل تشغيل الإصدار الجديد. للمزيد راجع دليل الترقية.
التحقق المخصص لرمز ID. راجع القسم الخاص node-oidc-provider v9 أعلاه بخصوص تغييرات at_hash و typ.