العربية
  • js
  • next
  • next-auth
  • auth.js

الهجرة من NextAuth.js v4 إلى Auth.js v5

دليل للهجرة من تكامل Logto من NextAuth.js v4 إلى v5.

Sijie
Sijie
Developer

الإصدار الخامس من NextAuth.js هو إعادة كتابة كبيرة لحزمة next-auth، والتي تجلب تحديثات مهمة تؤثر على العديد من التكاملات، بما في ذلك Logto. سيوجهك هذا الدليل خلال عملية ترحيل تكامل Logto الخاص بك من NextAuth.js v4 إلى Auth.js v5.

لقد قمنا مؤخرًا بتحديث دليل بدء التشغيل السريع لـ NextAuth. تحقق منه!

فهم التغييرات

Auth.js v5

يقدم NextAuth.js v5 عدة تغييرات مهمة، التغيير الرئيسي الذي يؤثر على طريقة تكامل Logto مع تطبيقك هو التغيير في "موفري OIDC/OAuth". في الوثائق الرسمية، يقول "بُني Auth.js الآن على @auth/core مع امتثال أكثر صرامة لمواصفات OAuth/OIDC، مما قد يعطل بعض موفري OAuth الموجودين"، بالنسبة لمستخدمي Logto، يعني هذا أنك بحاجة إلى تحديث تكوين الموفّر.

للمزيد من المعلومات حول التغييرات، يمكنك الرجوع إلى دليل الهجرة الرسمي.

تكوين موفّر Logto

تم تحديث تكوين الموفّر لـ Logto:

  • تم تغيير النوع من oauth إلى oidc.
  • تمت إزالة نقطة النهاية wellKnown، وتحتاج إلى توفير حقل issuer بدلاً من ذلك.
  • لا حاجة لتحديد خوارزمية توقيع id_token، فهي تدعم ES384 الآن وسيتم اكتشافها تلقائيًا.

دليل الهجرة خطوة بخطوة

قم بتحديث تكوين الموفّر في ملف /pages/api/auth/[...nextauth].js الخاص بك باستخدام قالب التكوين الجديد:

الخطوة 1: تغيير نوع الموفّر

قم بتغيير نوع الموفّر من oauth إلى oidc.

الخطوة 2: إضافة حقل issuer

أضف حقل issuer إلى تكوين الموفّر. يمكنك الحصول على قيمة issuer من صفحة تفاصيل تطبيق Logto، في الحقل "نقطة نهاية issuer". ينبغي أن يبدو مثل https://xxxx.logto.app/oidc إذا كنت تستخدم خدمة سحابة Logto.

ثم يمكنك إزالة الحقل wellKnown.

الخطوة 3: إزالة خوارزمية توقيع id_token_signed_response_alg

لم تعد بحاجة إلى تحديد خوارزمية توقيع id_token_signed_response_alg في تكوين الموفّر. إنها تدعم ES384 الآن وسيتم اكتشافها تلقائيًا.

تحديث المشروع

بعد تحديث تكوين الموفّر، عليك تحديث حزمة next-auth إلى الإصدار الخامس، اتبع دليل الهجرة الرسمي لتحديث الحزمة وتأكد من أن تطبيقك يعمل كما هو متوقع. تأكد أيضًا من الرجوع إلى دليل بدء التشغيل السريع لـ NextAuth.