การใช้ WebAuthn ใน Next.js: คู่มือแบบลงมือปฏิบัติ
คู่มือแบบลงมือปฏิบัติในการใช้ WebAuthn ใน Next.js พร้อมตัวอย่างโค้ดสด
คู่มือแบบลงมือปฏิบัติในการใช้ WebAuthn ใน Next.js พร้อมตัวอย่างโค้ดสด
ยินดีต้อนรับกลับสู่ซีรีส์ WebAuthn ของเรา ในบทความก่อนหน้านี้เราได้กล่าวถึง พื้นฐานของ WebAuthn, และ คู่มือ 101. หากคุณเพิ่งร่วมกับเรา สามารถตรวจสอบเนื้อหาในเบื้องต้นเหล่านี้เพื่อเริ่มต้นเรียนรู้ได้
วันนี้เราจะเริ่มปฏิบัติการลงมือจริง เราจะใช้ความสามารถของ Next.js กับฟีเจอร์ใหม่ "Server Actions" เป้าหมายของเราคือ การใช้ WebAuthn ในแอปพลิเคชัน Next.js เพื่อเตรียมความพร้อมสำหรับ WebAuthn
ก่อนที่เราจะดำดิ่งลงในทะเลโค้ด นี่คือตัวอย่างที่คุณจะพบในตอนท้ายของการเดินทาง - เว็บไซต์สาธิต ที่ทำงานได้เต็มที่ สำรวจเว็บไซต์นี้เพื่อดู WebAuthn ที่ใช้งานได้จริงและลองสร้างสิ่งที่คุณจะสร้าง ในเว็บไซต์สาธิตนี้คุณสามารถลงทะเบียนผู้ใช้ใหม่และล็อกอินด้วยรหัสผ่านที่เพิ่งลงทะเบียนได้

และสำหรับผู้ที่ชอบถือแผนที่ เรามีตัวช่วยให้คุณ! โค้ดทั้งหมดที่เราจะพูดถึงนั้นมีอยู่ใน ที่เก็บ GitHub สาธารณะ นี้. ซึ่งเป็นคู่มือเพื่อนร่วทางของคุณ นำเสนอโค้ดต้นฉบับทั้งหมดของการนำไปใช้งานของเรา
พร้อมที่จะออกผจญภัยที่น่าตื่นเต้นนี้หรือยัง? เริ่มกันเลย!
ก่อนที่เราจะเริ่มกัน การันตีว่าคุณมีสิ่งที่คุณต้องการ:
@simplewebauthn/browser, @simplewebauthn/server และ @simplewebauthn/typescript-typesตอนนี้เมื่อเรามีเครื่องมือและวัสดุในมือ พร้อมที่เราจะเริ่มสร้าง
เป็นการง่ายที่จะเริ่มต้นการจัดเก็บ KV ทั้งในโหมดผู้ผลิตและการพัฒนาท้องถิ่น ปฏิบัติตามคู่มือนี้เพื่อเชื่อมต่อร้านค้า KV กับโปรเจ็กต์ของคุณและดึงค่าของสภาพแวดล้อม: https://vercel.com/docs/storage/vercel-kv/quickstart
เราได้ส่งออกฟังก์ชัน 2 ฟังก์ชัน:
getCurrentSession: ใช้โอโนเชียนคุกกี้ของ Next.js เพื่อสร้างเซสชันสำหรับคำขอปัจจุบัน และส่งคืนค่าupdateCurrentSession: บันทึกข้อมูลไปยังเซสชันปัจจุบันในลักษณะเดียวกันกับการใช้งานเซสชันของเรา ลองสร้างฐานข้อมูลผู้ใช้ง่ายๆ
เราได้สร้างฟังก์ชันเพื่อค้นหาผู้ใช้ตามอีเมล และอัพเดทข้อมูลผู้ใช้ตามอีเมล อย่าลืมว่านี่เป็นการสาธิตเท่านั้น ในผลิตภัณฑ์จริง ข้อมูลผู้ใช้มักจะถูกเก็บไว้ในฐานข้อมูล
ก่อนที่เราจะดำเนินการต่อ มาดูแผนภาพการลงทะเบียนและกระบวนการตรวจสอบสิทธิ์:
ตามที่เห็นในแผนภาพ เราจำเป็นต้องเตรียมฟังก์ชัน 2 ฟังก์ชัน:
generateWebAuthnRegistrationOptionsverifyWebAuthnRegistrationคล้ายกับการลงทะเบียน การเข้าสู่ระบบต้องมีฟังก์ชัน 2 ฟังก์ชัน:
generateWebAuthnLoginOptionsverifyWebAuthnLoginนี่คือโค้ด:
เราได้เตรียมตัวจนเสร็จเรียบร้อยแล้ว มาสร้างหน้ากันเถอะ:
ขอแสดงความยินดีที่ได้ฝ่าฟันความซับซ้อนของการใช้ WebAuthn ในแอปพลิเคชัน Next.js ในขณะที่เราจบการสอนนี้ สิ่งสำคัญคือต้องพูดถึงข้อพิจารณาที่สำคัญบางประการสำหรับการปรับใช้ในสภาพแวดล้อมการผลิต
userId หรือ usernameขอบคุณที่ได้เข้าร่วมในการเดินทางทางการศึกษานี้ แม้ในตัวอย่างที่เล็กที่สุด การรวม WebAuthn ไม่ใช่เรื่องง่าย ยังมีอีกตัวเลือกหนึ่ง คุณสามารถลองใช้ WebAuthn ใน Logto's MFA: