NuxtAuth | Otentikasi untuk Nuxt
Pengenalan
NuxtAuth adalah modul Nuxt sumber terbuka yang menyediakan otentikasi untuk aplikasi Nuxt 3+. Modul ini mendukung berbagai metode otentikasi, memungkinkan Anda menyesuaikan cara pengguna masuk ke aplikasi Anda.
Melalui integrasi langsung ke Nuxt, Anda dapat mengakses dan menggunakan sesi pengguna di dalam halaman, komponen, dan komposable Anda secara langsung.
Fitur
Penyedia Otentikasi
- OAuth (misalnya Github, Google, Twitter, Azure...)
- OAuth Kustom (Tambahkan sendiri!)
- Kredensial (nama pengguna / email + kata sandi)
- URL Ajaib Email
Manajemen Sesi di Sisi Aplikasi
- Pengambilan sesi dengan
status,data, danlastRefreshedAt - Metode untuk
getSession,getCsrfToken,getProviders,signIn, dansignOut - Dukungan TypeScript penuh untuk semua metode dan properti
Perlindungan Aplikasi
- Perlindungan middleware di sisi aplikasi untuk seluruh aplikasi atau halaman tertentu
- Perlindungan middleware dan titik akhir di sisi server
Pertanyaan Umum
Mengapa NuxtAuth memerlukan NextAuth?
Penyedia authjs dapat menyediakan semua fiturnya dengan membungkus Auth / NextAuth di balik layar. Ini memberikan keandalan dan kenyamanan dari pustaka dengan lebih dari 22.000 bintang GitHub ke ekosistem Nuxt 3+ dengan pengalaman pengembang (DX) Nuxt asli. Membungkus Auth / NextAuth memiliki keuntungan kedua yaitu banyak penyedia OAuth, adaptor basis data, panggilan balik, dan lainnya didukung langsung. Ini juga berarti Anda dapat menggunakan semua panduan dan dokumentasi NextAuth dan Auth untuk mencapai hal-hal dengan penyedia authjs dari nuxt-auth.
NuxtAuth juga menyediakan fitur-fitur khusus Nuxt 3+ seperti komposable yang nyaman di sisi aplikasi untuk login, logout, mengakses data otentikasi pengguna, atau middleware dan plugin otentikasi yang menangani siklus hidup otentikasi pengguna dengan mengambil data otentikasi pada muatan awal, menyegarkan otentikasi pengguna saat tab difokuskan kembali, dan lainnya.
Apa perbedaan antara Auth dan NextAuth?
Kami menggunakan authjs di mana-mana untuk merujuk pada authjs dan next-auth secara bergantian karena next-auth saat ini sedang dalam transisi untuk menjadi authjs (nama bermerek: Auth).
Kami mengikuti transisi ini dan mengubah kode terkait saat sudah cukup stabil untuk digunakan. Anda dapat mengikuti implementasi transisi ini di isu terkait. Jika Anda mencari sesuatu yang berhubungan dengan penyedia ini di Google, kami sarankan Anda masih menggunakan istilah next-auth karena ini masih merupakan pustaka yang paling banyak digunakan dan yang stabil yang sebagian besar kami gunakan di balik layar. Fitur baru yang hanya untuk Auth belum dijamin berfungsi saat ini, karena kami masih mengandalkan next-auth sebagai fondasi yang stabil.
Kerentanan NextAuth GHSA-v64w-49xw-qq89
NuxtAuth membungkus NextAuth v4.21.1 untuk memberikan keandalan dan kenyamanan dari banyak penyedia OAuth yang telah dikonfigurasi dan diuji. Di v4.22 dan seterusnya, NextAuth telah mengubah ekspor paketnya, sehingga menghalangi pengguna NuxtAuth untuk menggunakan versi yang lebih baru.
Versi NextAuth di bawah 4.22 terpengaruh oleh kerentanan GHSA-v64w-49xw-qq89. Setelah melakukan investigasi internal terhadap kerentanan ini, kami dapat menentukan bahwa aplikasi NuxtAuth yang menggunakan versi ini tidak terpengaruh.
Deskripsi Kerentanan
Kerentanan GHSA-v64w-49xw-qq89 hanya memengaruhi aplikasi yang mengandalkan otorisasi middleware default yang disediakan oleh NextAuth. Kerentanan ini memungkinkan penyerang untuk membuat/meniru pengguna dengan mengakses JWT dari alur masuk OAuth yang terputus. Mereka kemudian dapat secara manual menimpa cookie sesi dan mensimulasikan login. Namun, melakukan ini tidak memberikan akses ke data atau izin pengguna, tetapi dapat memungkinkan penyerang melihat tata letak halaman yang dilindungi.
Mengapa Tidak Mempengaruhi NuxtAuth?
Karena middleware yang terpengaruh ditulis untuk Next, kami menulis middleware khusus kami sendiri untuk NuxtAuth yang tidak terpengaruh oleh kerentanan tersebut.
Platform Lainnya
Berita Piala Dunia
Jika Anda memiliki pertanyaan, silakan kirim email ke [email protected]