Adakah pembolehubah NEXTAUTH_SECRET sama dengan rahsia bahagian belakang yang digunakan untuk menjana token JWT?

王林
Lepaskan: 2024-02-08 23:09:09
ke hadapan
777 orang telah melayarinya

NEXTAUTH_SECRET 变量与用于生成 JWT 令牌的后端机密相同吗?

php Editor Apple, hello! Mengenai soalan anda, pembolehubah NEXTAUTH_SECRET adalah berbeza daripada rahsia bahagian belakang yang digunakan untuk menjana token JWT. NEXTAUTH_SECRET ialah kunci yang digunakan dalam NextAuth.js untuk menyulitkan kuki sesi, dan rahsia hujung belakang ialah kunci yang digunakan untuk mengesahkan dan menandatangani token JWT. Walaupun kedua-dua kunci digunakan untuk menjamin pengesahan pengguna sedikit sebanyak, peranannya dan cara ia digunakan adalah berbeza. Pastikan anda menyediakan dan melindungi kunci ini dengan betul apabila menggunakan NextAuth.js dan JWT untuk memastikan keselamatan aplikasi anda. Semoga ia membantu! Jika anda mempunyai sebarang pertanyaan lagi, sila berasa bebas untuk terus berunding.

Kandungan soalan

Saya sedang menulis aplikasi bahagian hadapan menggunakan NextJS dan menggunakan pengesahan seterusnya untuk pengesahan (e-mel, log masuk kata laluan). Bahagian belakang saya ialah pangkalan kod berbeza yang ditulis dalam GoLang, jadi apabila pengguna log masuk, ia menghantar permintaan ke titik akhir hujung belakang Golang dan mengembalikan token JWT, yang dijana seperti ini:

config := config.GetConfig()
atClaims := jwt.MapClaims{}
atClaims["authorized"] = true
atClaims["id"] = userId
atClaims["email"] = email
atClaims["exp"] = time.Now().Add(time.Hour * 24 * time.Duration(config.LoginExpire)).Unix()

token := jwt.NewWithClaims(jwt.SigningMethodHS256, atClaims)
signedToken, err := token.SignedString([]byte(config.AppSecret))
Salin selepas log masuk

Masalah saya sama dengan nilai NEXTAUTH_SECRET 这个环境变量有关,我从 Next Auth 文档中看到,正如你在 Go 中生成令牌时看到的那样,我使用这个 config.AppSecret (后端的环境变量),NEXTAUTH_SECRET 需要吗与后端的 config.AppSecret dan saya tidak pasti apa perbezaannya.

Terima kasih terlebih dahulu

Penyelesaian

Jawapan ringkasnya, tidak. NEXTAUTH_SECRET 和 GoLang 后端中的 config.AppSecret dalam Next.js tidak perlu sama; ia mempunyai tujuan yang berbeza dalam timbunan aplikasi anda.

NEXTAUTH_SECRET: Digunakan dalam Next.js untuk mendapatkan token NextAuth, yang penting untuk keselamatan sesi dalam rangka kerja NextAuth.

Rahsia Backend (config.AppSecret): Digunakan dalam bahagian belakang GoLang untuk menandatangani token JWT, memastikan integriti dan ketulenan token hujung belakang.

Jika anda ingin menggunakan token yang dijana bahagian belakang dalam aplikasi NextJs anda, anda harus melakukan perkara berikut:

  1. Simpan Token: Simpan token di lokasi yang selamat di sebelah pelanggan. Amalan biasa termasuk menggunakan localStoragesessionStoragecookies. Saya lebih suka menggunakan kuki kerana ia dihantar secara automatik dengan setiap permintaan dan mempunyai ciri keselamatan seperti sifat HttpOnly dan SameSite.

  2. Hantar token pada permintaan seterusnya: Apabila membuat permintaan ke bahagian belakang, biasanya masukkan token ini dalam pengepala Kebenaran. Pendekatan standard adalah menggunakan seni bina Bearer, seperti yang ditunjukkan di bawah: Authorization: Bearer <your_token_here>.

  3. Pengesahan Token: Bahagian belakang anda akan mengesahkan token ini pada setiap laluan yang dilindungi untuk mengesahkan permintaan. Token dinyahkod menggunakan kunci yang sama (config.AppSecret) yang digunakan untuk menandatangani.

Selain itu, anda juga perlu mengendalikan tamat tempoh token, menggunakan saluran https untuk penghantaran, dan melaksanakan perlindungan CSRF jika menggunakan kuki untuk menyimpan token.

Walau bagaimanapun, jika anda ingin memastikan mekanisme pengesahan bahagian hadapan dan bahagian belakang berasingan dan selamat, anda boleh menggunakan NEXTAUTH_SECRET 来保护 NextAuth 会话,并为 GoLang 后端使用 config.AppSecret untuk menandatangani token JWT dengan selamat dalam aplikasi Next.js anda.

Atas ialah kandungan terperinci Adakah pembolehubah NEXTAUTH_SECRET sama dengan rahsia bahagian belakang yang digunakan untuk menjana token JWT?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!