حل مصادقة كامل للنهاية مع Logto على Netlify: حماية تطبيقات الويب والوظائف الخالية من الخوادم
يظهر كيفية تأمين تطبيقات الويب على Netlify ووظائف الخوادم الخالية من الخوادم باستخدام مصادقة Logto، كاملة مع أمثلة على الشيفرة المصدرية ومعاينة للعرض المباشر.
YijunDeveloper
توقف عن إضاعة أسابيع في مصادقة المستخدم
أطلق تطبيقات آمنة بشكل أسرع مع Logto. قم بدمج مصادقة المستخدم في دقائق وركز على منتجك الأساسي.
نقطة نهاية Logto (يمكن العثور عليها في قسم "إعدادات ونقاط النهاية"، عادة بتنسيق https://<your-instance>.logto.app/)
سيتم طلب هذه الاعتمادات في الخطوات التالية.
لاحظ أنه في العرض التوضيحي لدينا، نستخدم مسار /callback للتعامل مع إعادة توجيه تسجيل الدخول في Logto. يجب تكوين URI الإعادة في Logto كـ https://<your-site-name>.netlify.app/callback.
بعد أن يقوم المستخدمون بتسجيل الخروج، نعود إلى الصفحة الرئيسية، لذا قمنا بتعيين URI إعادة التوجيه بعد تسجيل الخروج إلى https://<your-site-name>.netlify.app.
ثم قم بإعداد معلومات تطبيق Logto الذي أنشأناه في متغيرات البيئة الخاصة بنتليفاي (موقعك -> تكوين الموقع -> متغيرات البيئة):
ثم نستخدم هذه التكوينات في مشروع الواجهة الأمامية لدينا:
يمكنك عرض الشيفرة المتكاملة النهائية هنا: example-vite-react-logto.
لاحظ أنه عندما ننشر على نتليفاي ونسجل الدخول عبر Logto، لن يتم التوجيه التلقائي إلى صفحة الـCallback. وذلك لأن نتليفاي لا يدعم التوجيه على جانب العميل لتطبيقات الصفحة الواحدة (SPA) افتراضيًا.
عند زيارة مسارات مثل /callback، سيحاول نتليفاي العثور على ملفات مطابقة على الخادم بدلاً من توجيه الطلب إلى تطبيق React الخاص بك.
في هذه المرحلة، نحتاج إلى إنشاء ملف _redirects في الدليل العام لمشروع نتليفاي الخاص بك لإخبار نتليفاي بإعادة توجيه جميع الطلبات إلى index.html:
بدلاً من ذلك، يمكنك إنشاء ملف netlify.toml في جذر المشروع:
توفر وظائف نتليفاي وسيلة بسيطة ولكن قوية لبناء واجهات برمجية خلفية. باستخدام وظائف نتليفاي، يمكننا كتابة منطق على جانب الخادم دون القلق بشأن تكوين وصيانة الخادم التقليدي.
هذه الوظائف تخضع لإدارة الإصدارات، وتُبنى وتُنشر جنبًا إلى جنب مع موقعك على الويب، مما يُسهل عملية التطوير والنشر بين الواجهة الأمامية والخلفية.
لنبدأ في بناء واجهات برمجية خلفية باستخدام وظائف نتليفاي.
أولاً، نحتاج إلى إنشاء دليل الوظائف تحت دليل مشروع نتليفاي، ثم إنشاء ملف hello.ts:
عندما نزور https://<your-site-name>.netlify.app/.netlify/functions/hello، سيتم استدعاء هذه الوظيفة وستعيد "Hello world!"".
إذا كنت تعتقد أن المسار /.netlify/functions/hello يبدو غريبًا بعض الشيء، يمكنك إعداد إعادة توجيه لاستدعاء الوظيفة عن طريق إضافة قاعدة إعادة توجيه في ملف _redirects العام:
بهذه الطريقة، عندما نزور https://<your-site-name>.netlify.app/api/hello، ستستدعي وظيفتنا وتعيد "Hello world!". هذه في الواقع هي الطريقة الشائعة لبناء واجهات برمجية باستخدام وظائف نتليفاي.
ويمكننا الوصول إلى هذه الواجهة البرمجية في مشروع الواجهة الأمامية باستخدام fetch:
الآن بعد أن أصبح لدينا واجهة برمجية خلفية، نحتاج إلى التأكد من أن المستخدمين المصادق عليهم فقط يمكنهم الوصول إليها. سنقوم بحماية وظائف نتليفاي الخاصة بنا باستخدام آلية المصادقة في Logto.
لحماية نقاط نهاية الواجهة البرمجية الخاصة بنا:
إنشاء مورد API في لوحة تحكم Logto لتمثيل واجهتنا البرمجية الخلفية:
انتقل إلى "موارد API" في لوحة تحكم Logto وقم بإنشاء API جديد
حدد اسمًا ومُعرّف API (مثل، https://api.backend.com)
قم بتدوين مُعرّف API في صفحة تفاصيل مورد API حيث سنحتاجه لاحقًا
إعداد تطبيقك لاستخدام هذا المورد API من خلال إضافة المُعرّف إلى متغيرات البيئة الخاصة بنتليفاي:
تحديث تكوين Logto ليشمل هذا المورد API:
عند تقديم الطلبات إلى النقاط النهاية المحمية، يجب على واجهتك الأمامية تضمين رمز دخول صالح. إليك كيفية طلب واستخدامه:
الآن، دعنا ننفذ تحقق الرمز في خلفيتنا للتأكد من أنه يتم معالجة الطلبات التي تحمل رموز دخول صالحة فقط.
أولاً، نحتاج إلى تثبيت التبعية jose لمساعدتنا في التحقق من رمز JWT:
ثم، يمكننا تنفيذ تحقق الرمز في الخلفية الخاصة بنا:
الآن، دعنا نقم بتحديث وظيفة نتليفاي الخاصة بنا لاستخدام وظيفة verifyLogtoToken:
هذا هو كل شيء! الآن، وظيفة نتليفاي الخاصة بنا محمية بواسطة Logto وسيتم معالجة الطلبات التي تحمل رموز دخول صالحة فقط.
يوضح هذا الدليل كيفية دمج مصادقة Logto في تطبيق ويب منشور على نتليفاي.
عبر تكوين تطبيقات Logto وموارد API، قمنا بتنفيذ مصادقة الواجهة الأمامية وحماية نقاط نهاية وظائف نتليفاي.
للحصول على تحكم أكثر دقة، يمكنك الاستفادة من إمكانيات Logto RBAC (التحكم في الوصول المستند إلى أدوار) من خلال تعريف الأدوار والتصاريح في لوحة تحكم Logto والتحقق من أدوار المستخدمين داخل وظائف نتليفاي.