MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Haruskah saya menyimpan token JWT di redis?

TLDR:Jika Anda ingin kemampuan untuk mencabut token di beberapa titik, ya, simpan di sesuatu yang cepat seperti Redis.

Salah satu kelemahan penggunaan JWT yang terdokumentasi dengan baik adalah bahwa tidak ada cara sederhana untuk mencabut token jika misalnya pengguna harus keluar atau token telah disusupi. Mencabut token berarti mencarinya di beberapa penyimpanan dan kemudian memutuskan apa yang harus dilakukan selanjutnya. Karena salah satu poin JWT adalah untuk menghindari perjalanan bolak-balik ke db, kompromi yang baik adalah menyimpannya dalam sesuatu yang lebih ringan daripada rdbms. Itu pekerjaan yang sempurna untuk Redis.

Seperti yang disarankan dalam komentar, pendekatan yang baik adalah membuat daftar tersebut menjadi daftar hitam (yaitu daftar token yang tidak valid). Pada setiap permintaan, Anda mencari daftar untuk memastikan token tidak ada di dalamnya. Anda dapat lebih meningkatkan ruang memori dan kinerja selama langkah pencarian dengan menggunakan algoritme probabilistik untuk menyimpan token. Pendekatan sederhana adalah memiliki pencarian berlapis. Misalnya, Anda dapat memiliki toko dalam aplikasi kecil yang hanya melacak beberapa (misalnya 1 hingga 4) byte pertama dari token Anda yang masuk daftar hitam. Kemudian cache redis akan melacak versi token yang sama yang sedikit lebih lengkap (misalnya 2 hingga 8 byte pertama). Anda kemudian dapat menyimpan versi lengkap dari token yang masuk daftar hitam menggunakan solusi yang lebih persisten (sistem file, rdbms, dll). Ini adalah strategi pencarian optimis yang akan dengan cepat mengonfirmasi bahwa token tidak ada dalam daftar hitam (yang akan menjadi kasus yang lebih umum). Jika token yang dicari kebetulan cocok dengan item dalam daftar hitam dalam aplikasi (karena beberapa byte pertamanya cocok), maka lanjutkan ke pencarian tambahan di redis store, lalu persisten store jika perlu. Beberapa (atau semua) toko dapat diimplementasikan sebagai tabel percobaan atau hash. Struktur data lain yang efisien dan relatif sederhana untuk dipertimbangkan adalah sesuatu yang disebut filter Bloom.

Jelas, Anda harus menyesuaikan pendekatan di atas jika Anda secara rutin memasukkan jutaan token tahan lama ke daftar hitam (yang mungkin juga menunjukkan bahwa Anda memiliki masalah yang berbeda).



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Panduan untuk Penerapan &Pemeliharaan MongoDB Menggunakan Wayang:Bagian 1

  2. Mongoose find(), bagaimana cara mengakses dokumen hasil?

  3. Memulai Dengan Basis Data Non-relasional Menggunakan Mongodb

  4. MongoDB Node menemukan cara untuk menangani tidak ada hasil?

  5. MongoDB $setOnInsert