Saya tidak dapat memahami alasan untuk membuat klaim / payload JWT terlihat publik setelah base64 mendekodekannya.
Mengapa?
Sepertinya akan jauh lebih berguna untuk membuatnya dienkripsi dengan rahasia.
Adakah yang bisa menjelaskan mengapa, atau dalam situasi apa, menjaga data ini tetap berguna?
security
json
authentication
jwt
saya membutuhkan bantuan
sumber
sumber
Jawaban:
Anda memilih untuk tidak mengenkripsi muatan karena alasan yang sama dengan yang Anda pilih untuk tidak mengenkripsi hal lain: biaya (betapapun kecilnya) melebihi manfaatnya, dan banyak data tidak perlu diamankan dengan cara itu.
Yang paling Anda butuhkan perlindungan terhadapnya adalah orang-orang yang merusak data sehingga catatan yang salah diperbarui, atau rekening giro seseorang mendapat uang di dalamnya yang seharusnya tidak dimiliki. Tanda tangan JSON Web Token memenuhi hal itu, karena mengubah bagian dari kombinasi header / payload / signature membatalkan paket.
Perhatikan bahwa Anda masih bisa mengamankan paket di Transport Layer dengan menggunakan SSL.
sumber
Penggunaan istilah tanda tangan dalam RFC adalah analog dengan tanda tangan digital dalam kriptografi asimetris. Dalam kriptografi asimetris jika pengirim mengenkripsi pesan dengan kunci pribadi mereka, siapa pun yang memiliki pesan dapat mendekripsi dengan kunci publik pengirim. Jadi tujuan dengan istilah tanda tangan bukan untuk menjaga rahasia pesan, tetapi untuk memverifikasi integritas / pengirim pesan, yang belum diubah.
Dalam kasus JWT sistem pengiriman adalah pencipta dan konsumen pesan (lihat diagram di bawah), dan tujuannya adalah untuk memastikan token yang diberikan kepada pengguna tidak dirusak (misalnya diberi hak tinggi yang diberikan).
Dan seperti yang disebutkan @Robert, JWT masih bisa / harus dienkripsi dengan TLS.
Berikut adalah penjelasan yang bagus tentang JWT dan tanda tangan dari mana gambar di bawah ini bersumber. 5 Langkah Mudah Memahami Token Web JSON (JWT)
sumber
Untuk menambah jawaban Robert Harveys, ada kerugian yang signifikan untuk mengenkripsi muatan - itu berarti bahwa penerima layanan perlu berbagi rahasia dengan server otentikasi (kunci enkripsi) untuk memahami apakah pembawa token itu berwenang atau tidak atau tidak. Sebaliknya siapa pun dapat memvalidasi JWT hanya menggunakan kunci publik yang diterbitkan oleh server otentikasi.
Ini adalah bagian penting dari spesifikasi koneksi openid karena memungkinkan aplikasi klien untuk memvalidasi token identitas yang dikeluarkan oleh server auth, juga memudahkan untuk menggunakan server sumber daya (karena mereka tidak perlu digunakan dengan akses ke enkripsi rahasia kunci) dan juga membantu ketika mencoba mendiagnosis masalah dengan JWT yang dikeluarkan.
sumber