Otentikasi melalui token

8

Saya relatif baru untuk jwt.io dan otentikasi dan saya menggunakan JWT.io dengan cara berikut.

Sisi server

Setelah pengguna masuk, saya membuat token dengan useridtertanam di dalamnya dan meneruskannya kembali ke pengguna di badan pesan

Browser Sisi Klien / JS Saya menyimpan token di localStorage dan untuk setiap permintaan berikutnya, saya meneruskan token di header.

Authorization: Basic someEncryptedValue

Saya juga pernah menggunakan

X-Auth-Token: someEncryptedValue

Bisakah saya menggunakan ini dalam cookie?

Kemudian di sisi server, saya memverifikasi token terhadap rahasia, memeriksa kedaluwarsa, mengeluarkan id dari token dan kemudian melayani permintaan.

Apakah semuanya benar dalam alur kerja ini?

pengguna2727195
sumber
Adakah alasan untuk tidak mengikuti standar seperti OAuth2? Btw: Anda tidak boleh melewatkan token sebagai header auth dasar, sebagai gantinya gunakan Otorisasi: Bearer
Arne Burmeister
ya Bearer adalah yang benar, OAuth2 adalah saya berasumsi adalah untuk mengotentikasi pengguna melalui pihak ke-3 seperti google, Facebook dll. sedangkan ini adalah skema otentikasi saya sendiri terhadap kata sandi pengguna, tolong beri tahu saya lebih banyak jika saya salah
user2727195
1
Pihak ketiga auth hanya satu fitur OAuth, bekerja sempurna dengan JWT dan server auth sendiri
Arne Burmeister
ok, tolong beri tahu saya dengan beberapa tutorial mudah untuk diterapkan
user2727195
2
Tidak perlu oAuth kecuali Anda membutuhkan aplikasi berbagi info di antara mereka. Untuk fitur yang begitu mendasar sebagai otentikasi, Jwt sudah cukup.
Laiv

Jawaban:

1

Alur kerja Anda benar (dengan asumsi Anda menggunakan HTTPS), dan ya Anda bisa menyimpan token Anda di Cookie daripada meneruskannya di header otorisasi.

Saya tidak merekomendasikan menggunakan OAuth2. Menerapkan bahkan aliran yang paling sederhana sekalipun akan menambah kerumitan pada proses login Anda, dan bagi saya sepertinya Anda tidak membutuhkannya karena bagian "sisi server" Anda semuanya hidup di domain yang sama.

Jika itu aku, aku akan menggunakan cookie. Berpegang teguh pada skema yang dipahami dengan baik menyisakan lebih sedikit peluang untuk kebingungan dan berarti browser menangani pengiriman dan pembaruan cookie Anda (mis. Pertimbangkan bagaimana Anda dapat menangani sesi dengan waktu tunggu idle)

Justin
sumber
1
Sudahkah Anda mempertimbangkan perbedaan antara serangan XSS dan CSRF? Saya dengan hormat menyarankan bahwa menggunakan cookie saja dapat menghasilkan kerentanan CSRF yang lebih mudah untuk dieksploitasi daripada serangan gaya XSS, sedangkan otentikasi berbasis token, meskipun masih rentan, lebih sulit untuk dieksploitasi. Either way, untuk benar-benar melindungi dari kedua jenis serangan, Anda memerlukan cookie dan token header yang ada dalam permintaan untuk secara aman mempertimbangkan pengguna yang diautentikasi dan diotorisasi.
RibaldEddie
@RibaldEddie Tidak, saya belum - Saya kira saya berasumsi bahwa beberapa mekanisme lain akan digunakan untuk mencegah CSRF. Apakah ada kemungkinan Anda bisa membahas lebih detail? Bagaimana otentikasi berbasis token masih rentan? Dan bagaimana cara menggunakan kedua metode melindungi terhadap CSRF?
Justin
Pola token terenkripsi adalah salah satu solusi. Begitu juga cookie kiriman ganda. Keduanya membutuhkan nilai lain yang dikirim dengan permintaan saat menggunakan cookie untuk lulus kredensial.
RibaldEddie
0

Bacaan yang bagus. Ini berbicara tentang menyimpan token ke penyimpanan lokal dan kemudian mengirim kembali melalui javascript dalam permintaan http.

: https://stormpath.com/blog/where-to-store-your-jwts-cookies-vs-html5-web-storage

pengguna2727195
sumber
6
Tolong, jangan hanya menautkan ke situs web eksternal untuk mencegah pembusukan tautan. Jika artikel tersebut berisi informasi berharga, berikan ringkasan artikel dan posting di sini.
Andy
1
Ada banyak info berharga di sana, ringkasan poin-poin tinggi akan menyenangkan (seperti manfaatkan penandatanganan JWT, gunakan cookie, dan beberapa langkah lainnya).
Berin Loritsch
0

Semua browser sekarang mendukung Digest Auth, yang aman bahkan melalui HTTP. Tergantung pada kebutuhan Anda yang tepat, ini mungkin cukup.

Hugh Morris
sumber