Alat pengembang · dekoder JWT
Penjelasan Header JWT: alg, typ, kid dan Fields to Distrust
· Cara kerjanya
jwt keamanan otentikasi
Header memberi tahu pemverifikasi bagaimana token ditandatangani dan kunci mana yang digunakan. Postingan ini menjelaskan setiap bidang header umum, apa yang dapat diandalkan oleh pemverifikasi, dan bidang mana yang tidak boleh dipercaya dari token itu sendiri.
Objek kecil JSON yang tidak dibaca oleh siapa pun — dan keputusan verifikasi yang dipengaruhinya
Headernya cukup kecil untuk diabaikan, namun kolomnya sering kali ikut serta dalam perutean verifikasi. Oleh karena itu, sangat berbahaya jika kita mengacaukan visibilitas dengan otoritas. ToolAcre mendekode header sebagai objek JSON dan memperlihatkan propertinya, tetapi setiap byte berasal dari pemegang token dan tetap merupakan masukan yang tidak tepercaya.
Pemverifikasi hanya dapat menggunakan nilai header di dalam batasan yang ditetapkan dari konfigurasi tepercaya. Token tidak boleh menciptakan algoritma, penerbit, atau sumber kunci jarak jauh yang diterima. Tugas dekoder berakhir pada JSON yang dapat dibaca ditambah peringatan; ia tidak pernah memilih kunci atau menghasilkan keputusan mengizinkan atau menolak.
tampilan alg: decoder hanya menjelaskan algoritma yang disebutkan dalam implementasinya
`alg` mendeklarasikan algoritma yang digunakan oleh klaim token. ToolAcre memiliki catatan penjelasan untuk HS256, HS384, HS512, RS256, RS384, RS512, ES256, ES384, ES512, PS256, PS384 dan PS512, ditambah peringatan untuk `none`. String lainnya ditampilkan sebagai tidak dikenal, bukan diperlakukan sebagai didukung.
Daftar ini adalah fitur tampilan, bukan katalog algoritma yang ToolAcre dapat verifikasi: daftar ini tidak memverifikasi satu pun dari algoritma tersebut. Backend harus menyematkan pilihan yang diizinkan secara independen dan menolak ketidakcocokan. Membaca `alg: RS256` tidak dapat membuktikan RSA telah digunakan, sama seperti membaca `alg: none` tidak dapat dengan aman mengotorisasi token yang tidak ditandatangani.
typ dan cty — mendeklarasikan jenis token, profil at+jwt untuk token akses, dan JWT yang disarangkan
`typ` menjelaskan jenis media atau profil yang diinginkan produser. ToolAcre memperingatkan ketika nilai string berbeda dari `JWT`; itu tidak menerapkan semantik profil. Bidang `cty` dapat menjelaskan konten yang disarangkan, namun dekoder saat ini tidak memiliki jalur pemrosesan token yang disarangkan dan tidak menafsirkan bidang tersebut.
Pengetikan eksplisit dapat membantu pemverifikasi memisahkan kelas token yang berbeda ketika kebijakannya menentukan nilai yang diharapkan. Cek tersebut masih menjadi milik verifikator tersebut. Token tidak dapat menjadikan dirinya sendiri sebagai token akses hanya dengan mengumumkan label pilihan, dan panel dekode tidak dapat menentukan titik akhir aplikasi mana yang harus menggunakannya.
kid — pengidentifikasi kunci yang memungkinkan pemverifikasi memutar kunci tanpa waktu henti
`kid` adalah pengidentifikasi kunci, bukan materi kunci dan bukan bukti kepemilikan. Layanan yang merotasi beberapa kunci tepercaya dapat menggunakan konteks penerbit yang diautentikasi dan pengidentifikasi terbatas untuk menemukan kandidat. Pengidentifikasi harus tetap menjadi masukan ke pencarian terkontrol, bukan jalur file, fragmen kueri, atau URL sewenang-wenang.
ToolAcre membuat `kid` terlihat di header JSON tetapi tidak menyelesaikannya. Pengendalian itu penting: tidak ada penyimpanan kunci tepercaya yang tersedia untuk halaman decoding publik. Jika 401 mengikuti rotasi, bandingkan pengidentifikasi yang ditampilkan dengan inventaris dan log kunci sisi server tanpa berasumsi bahwa kunci yang disarankan token itu sah.
jku, x5u, jwk dan x5c — kolom header yang menunjuk pada kunci, dan mengapa pemverifikasi tidak boleh mengambil atau memercayainya secara membabi buta
Bidang seperti `jku` dan `x5u` dapat memberi nama lokasi, sedangkan `jwk` dan `x5c` dapat memuat data terkait kunci. Kehadiran mereka tidak menjadikan lokasi atau nilai tersebut dapat dipercaya. Mengambil URL atau menerima materi yang disematkan semata-mata karena header yang belum diverifikasi memberikan keputusan keamanan kepada pemohon.
Pemverifikasi yang aman memperoleh kunci melalui hubungan penerbit dan kebijakan jaringan yang ditetapkan di luar token. ToolAcre tidak mengambil URL header atau membangun kepercayaan dari kunci yang disematkan. Selama peninjauan, melihat salah satu bidang ini merupakan perintah untuk memeriksa konfigurasi verifikator, bukan instruksi untuk mengikuti header.
crit — ekstensi yang harus dipahami atau ditolak oleh verifikator
`crit` menandakan bahwa ekstensi tertentu memerlukan pemahaman oleh penerimanya. Pemverifikasi yang mendukung ekstensi semacam itu memerlukan penerapan eksplisit dan jalur penolakan untuk nama penting yang tidak diketahui. Mengabaikan penanda penting yang asing dapat membuat produsen dan konsumen menafsirkan konten yang dilindungi secara berbeda.
Implementasi dekode saja tidak memproses `crit`, sehingga dapat menampilkan array mentah tanpa mengklaim kompatibilitas. Ini adalah batasan lain antara inspeksi dan validasi. Jika token produksi bergantung pada ekstensi penting, verifikasi perilaku di perpustakaan dan konfigurasi sebenarnya daripada menyimpulkan dukungan dari JSON yang dapat dibaca.
Contoh praktis - membaca header yang realistis dan memutuskan bidang mana yang menginformasikan verifikasi dan mana yang hanya bersifat informasi
Pertimbangkan `{"alg":"RS256","typ":"JWT","kid":"rotate-7"}`. ToolAcre mencetak ketiga bidang dengan cantik dan menjelaskan bahwa verifikasi RS256 memerlukan kunci publik penerbit. Peninjau dapat mencatat algoritme dan pengidentifikasi kunci yang dideklarasikan, lalu membandingkannya dengan kebijakan yang disematkan pada server dan kumpulan kunci tepercaya.
Bidang tersebut memberikan informasi kepada penyelidikan namun tidak memutuskan apa pun secara independen. Jika server hanya mengizinkan algoritme lain, tidak dapat menemukan `rotate-7` di kumpulan penerbit yang benar, atau menolak tanda tangan, header yang dapat dibaca tidak mengesampingkan hasil tersebut. Demikian pula, mengubah teks header tanpa menghitung ulang tanda tangan yang valid tidak boleh diterima.
Kesimpulan: header adalah masukan, bukan otoritas — decoder ToolAcre JWT menampilkan header sehingga Anda dapat membacanya; verifikator harus memutuskan secara independen apa yang harus dipercaya
Perlakukan header JWT sebagai masukan, bukan otoritas. Nilainya dapat membantu memilih di antara pilihan yang sudah diotorisasi oleh konfigurasi, mengidentifikasi kemungkinan masalah rotasi, atau menjelaskan ketidakcocokan profil. Mereka tidak dapat membangun kepercayaan pada algoritme, kunci, URL, atau jenis token mereka sendiri.
Gunakan ToolAcre untuk membaca header pengujian dan memunculkan nilai mencurigakan seperti `alg`, `none` yang hilang, atau `typ` yang tidak terduga. Kemudian pindah ke pemverifikasi yang dikonfigurasi untuk setiap keputusan konsekuensial. Penguraian kode tidak membuktikan keaslian, integritas, otorisasi, atau identitas penerbit, terlepas dari seberapa masuk akal tampilan headernya.