• js
  • next
  • next-auth
  • auth.js

การย้ายจาก NextAuth.js v4 ไปยัง Auth.js v5

คู่มือการย้ายการรวม Logto จาก NextAuth.js v4 ไปยัง v5

Sijie
Sijie
Developer

NextAuth.js เวอร์ชัน 5 เป็นการเขียนใหม่ครั้งใหญ่ของแพ็กเกจ next-auth ซึ่งมีการอัปเดตที่ทำให้ต้องมีการเปลี่ยนแปลงในหลายการรวม รวมถึง Logto ด้วย คู่มือนี้จะนำคุณผ่านขั้นตอนการย้ายการรวม Logto ของคุณจาก NextAuth.js v4 ไปยัง Auth.js v5

การทำความเข้าใจกับการเปลี่ยนแปลง

Auth.js v5

NextAuth.js v5 นำเสนอการเปลี่ยนแปลงต่างๆ ที่มีผลกระทบต่อวิธีที่คุณรวม Logto กับแอปพลิเคชันของคุณ การเปลี่ยนแปลงหลักคือ "OIDC/OAuth Providers" ในเอกสารทางการกล่าวว่า "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 ลงในการตั้งค่าของผู้ให้บริการ คุณสามารถรับค่าผู้ให้บริการจากหน้ารายละเอียดโปรแกรม Logto ในฟิลด์ "Issuer endpoint" ควรมีลักษณะเช่น https://xxxx.logto.app/oidc หากคุณใช้บริการ Logto cloud

แล้วคุณสามารถลบฟิลด์ wellKnown ได้

ขั้นตอนที่ 3: ลบอัลกอริทึมการลงนาม id_token_signed_response_alg

คุณไม่จำเป็นต้องระบุอัลกอริทึมการลงนาม id_token_signed_response_alg ในการตั้งค่าของผู้ให้บริการ สนับสนุน ES384 แล้วตอนนี้และจะถูกตรวจจับโดยอัตโนมัติ

อัปเดตโปรเจกต์

หลังจากอัปเดตการตั้งค่าของผู้ให้บริการ คุณต้องอัปเดตแพ็กเกจ next-auth เป็น v5 ทำตาม คู่มือการย้ายทางการ เพื่ออัปเดตแพ็กเกจและตรวจสอบให้แน่ใจว่าแอปพลิเคชันของคุณทำงานตามที่คาดหวัง