Alat pengembang · dekoder JWT
RFC 8725 Penjelasan: JWT Praktik Terbaik Saat Ini untuk Verifikator
· Latar belakang
jwt keamanan otentikasi
IETF mengumpulkan kendala JWT yang diketahui ke dalam satu dokumen praktik terbaik terkini. Postingan ini membahas rekomendasinya dan menghubungkan masing-masing rekomendasi dengan kelas insiden yang dicegah.
Kegagalan JWT yang berulang memotivasi daftar periksa verifikator; sumber repositori tidak membuat riwayat publikasi
Format token yang fleksibel mengizinkan kombinasi yang harus dibatasi oleh verifikator. Kesalahan yang berulang termasuk mempercayai label algoritme, menerima token dari penerbit atau audiens yang salah, dan mengikuti materi kunci yang dipilih penyerang. Daftar periksa mengubah risiko-risiko luas tersebut menjadi pengujian penolakan pada batas penerimaan sebenarnya.
Garis besarnya mengaitkan riwayat publikasi pada tahun tertentu, namun sumber repositori tidak memverifikasi riwayat tersebut, sehingga bagian ini menghilangkannya. Perbedaan yang dapat ditindaklanjuti ditetapkan secara lokal: ToolAcre hanya mendekode, sedangkan setiap keputusan praktik terbaik menjadi milik pemverifikasi yang dikonfigurasi.
Sematkan algoritme dan tolak tidak ada — rekomendasi yang mengatasi alg:none dan kebingungan kunci
Menyematkan algoritme yang diizinkan secara independen dari header dan menolak masukan yang tidak ditandatangani dalam aliran yang memerlukan tanda tangan. Ikat setiap kelompok algoritme yang diterima ke jenis kunci yang benar. Jangan biarkan token mengalihkan pemverifikasi dari pemeriksaan asimetris ke HMAC atau menonaktifkan pemeriksaan dengan `none`.
ToolAcre menandai `none` dan menjelaskan label yang dikenali, namun peringatan tersebut tidak menerapkan apa pun. Buktikan kebijakan sebenarnya dengan pengujian negatif terhadap backend: algoritme yang tidak terduga, tanda tangan kosong, dan tipe kunci yang salah harus gagal meskipun dua segmen pertamanya tetap dapat didekodekan.
Validasi audiens dan penerbit — rekomendasi terhadap pemutaran ulang lintas layanan
Otentikasi penerbit berdasarkan konfigurasi kunci tepercaya, lalu bandingkan audiens yang dituju dengan layanan yang menggunakan. Tanda tangan yang valid tanpa pemeriksaan klaim kontekstual masih dapat mengotorisasi token di tempat yang salah. String penerbit yang disalin dengan sendirinya bukanlah pengikatan kunci.
Decoder menampilkan nilai `iss` dan `aud` tanpa mengetahui konfigurasi yang diharapkan. Gunakan visibilitas tersebut untuk mengidentifikasi kasus uji, bukan untuk membuat keputusan. Tes penerimaan harus membedakan penerbit yang salah, audiens yang salah, dan kegagalan tanda tangan sehingga log operasional tetap berguna.
Gunakan pengetikan eksplisit — header ketik sebagai pertahanan terhadap substitusi token
Pengetikan token eksplisit dapat memisahkan profil yang menggunakan kembali bentuk klaim serupa. Pemverifikasi harus mengetahui jenis yang diharapkan untuk titik akhir tertentu dan menolak profil yang tidak kompatibel daripada memperlakukan setiap JWT yang ditandatangani sebagai dapat dipertukarkan.
Header `typ` masih tidak dipercaya hingga verifikasi, dan ToolAcre hanya memperingatkan ketika stringnya berbeda dari `JWT`. Itu tidak memvalidasi profil token akses, konten bersarang, atau konvensi penyedia. Tentukan aturan tipe dalam aplikasi dan uji upaya substitusi.
Jangan percaya jku, x5u atau kunci yang disematkan — rekomendasi sumber kunci
Jangan biarkan `jku`, `x5u`, data JWK yang disematkan atau susunan sertifikat menetapkan sumber kunci hanya karena muncul di header yang dilindungi. Selesaikan kunci melalui hubungan penerbit tepercaya secara independen dan kebijakan pengambilan terbatas. Perlakukan `kid` hanya sebagai pemilih dalam batas tersebut.
ToolAcre tidak melakukan pencarian jaringan dari nilai header. Itu adalah perilaku yang benar untuk seorang inspektur umum. Selama audit, lacak setiap jalur dari metadata header ke sistem file, cache, database, dan operasi jaringan, lalu tolak jalur apa pun yang menciptakan kepercayaan dari input yang dikontrol token.
Input kriptografi dan panduan konten terenkripsi harus diperiksa di perpustakaan dan profil yang dipilih
Implementasi kriptografi harus memvalidasi masukan dan mengikuti aturan profil yang dipilih. Desain enkripsi juga memerlukan perhatian seputar kompresi dan data yang dapat diamati. API dan default yang tepat bersifat khusus perpustakaan dan tidak ada dalam repositori ini, jadi artikel ini tidak menciptakan peralihan atau mengklaim dukungan universal.
Baca dokumentasi terkini untuk pustaka dan versi yang diterapkan, lalu buat pengujian input salah dan ketidakcocokan kebijakan. Kesalahan INVALID_JWT dekoder menunjukkan ergonomi pemeriksaan yang baik, namun kesalahan tersebut bukan merupakan bukti bahwa pemverifikasi terpisah menangani kasus tepi kriptografi dengan benar.
Contoh praktis - mengaudit rutinitas verifikasi berdasarkan daftar periksa
Audit rutin verifikasi dengan mencantumkan konfigurasi penerbit tepercaya, algoritme yang diterima, sumber kunci, audiens, jenis token, kebijakan waktu, dan klaim aplikasi. Untuk setiap item, tambahkan token negatif yang dapat dibaca secara sintaksis tetapi melanggar satu ekspektasi. Konfirmasikan penolakan pada batas sebenarnya.
Gunakan ToolAcre hanya untuk memeriksa klaim setiap perlengkapan dan memastikan adanya mutasi yang diinginkan. Jangan gunakan keluarannya sebagai pernyataan bahwa perlengkapan tersebut tidak valid. Respons dan log pemverifikasi memberikan bukti tersebut, sementara dekoder tetap konstan pada contoh yang diterima dan ditolak.
Kesimpulan: daftar periksa, bukan perpustakaan — dekoder ToolAcre JWT membantu Anda memeriksa token selama audit; praktik ini berlaku untuk pemverifikasi yang Anda tulis
Dokumen praktik terbaik adalah daftar periksa, bukan pustaka verifikasi. Nilainya muncul ketika tim menerjemahkan rekomendasi ke dalam konfigurasi eksplisit, hubungan kepercayaan yang sempit, dan pengujian yang gagal. Decoder dapat membuat input token dapat dibaca selama pekerjaan tersebut tetapi tidak dapat mengimplementasikan kontrolnya.
Pertahankan batasan dalam dokumentasi dan UI: yang didekodekan berarti dapat dibaca, tidak autentik, tidak dimodifikasi, diizinkan, atau dapat diterima. Sematkan kebijakan di luar token, verifikasi terlebih dahulu, lalu terapkan klaim kedua. ToolAcre sengaja berhenti sebelum semua keputusan tersebut.