Alat pembangun · JWT penyahkod
Tajuk JWT Dijelaskan: alg, typ, kid dan Medan yang Tidak Boleh Dipercayai
· Bagaimana ia berfungsi
jwt keselamatan pengesahan
Pengepala memberitahu pengesah cara token ditandatangani dan kunci mana yang hendak digunakan. Siaran ini menerangkan setiap medan pengepala biasa, perkara yang boleh dipercayai oleh pengesah dan medan yang tidak boleh dipercayai daripada token itu sendiri.
Objek kecil JSON tiada siapa membaca — dan keputusan pengesahan yang dipengaruhinya
Pengepalanya cukup kecil untuk diabaikan, namun medannya sering mengambil bahagian dalam penghalaan pengesahan. Itu menjadikannya berbahaya untuk mengelirukan keterlihatan dengan kuasa. ToolAcre menyahkod pengepala sebagai objek JSON dan menunjukkan sifatnya, tetapi setiap bait datang daripada pemegang token dan kekal sebagai input yang tidak dipercayai.
Pengesah boleh menggunakan nilai pengepala sahaja dalam kekangan yang ditetapkan daripada konfigurasi yang dipercayai. Ia tidak sepatutnya membiarkan token mencipta algoritma, pengeluar atau sumber kunci jauh yang diterima. Tugas penyahkod tamat pada JSON yang boleh dibaca serta amaran; ia tidak pernah memilih kunci atau menghasilkan keputusan membenarkan atau menafikan.
paparan alg: penyahkod sahaja menerangkan algoritma yang dinamakan dalam pelaksanaannya
`alg` mengisytiharkan algoritma tuntutan token telah digunakan. ToolAcre mempunyai nota penerangan untuk HS256, HS384, HS512, RS256, RS384, RS512, ES256, ES384, ES512, PS256, PS384 dan PS512, ditambah amaran untuk `none`. Sebarang rentetan lain dipaparkan sebagai tidak dikenali dan bukannya dianggap sebagai disokong.
Senarai ini ialah ciri paparan, bukan katalog algoritma yang ToolAcre boleh sahkan: ia tidak mengesahkan satu pun daripadanya. Bahagian belakang mesti menyematkan pilihan yang dibenarkan secara bebas dan menolak ketidakpadanan. Membaca `alg: RS256` tidak dapat membuktikan RSA telah digunakan, sama seperti membaca `alg: none` tidak boleh membenarkan token yang tidak ditandatangani dengan selamat.
typ dan cty — mengisytiharkan jenis token, profil at+jwt untuk token akses dan JWT bersarang
`typ` menerangkan jenis media atau profil yang dimaksudkan oleh pengeluar. ToolAcre memberi amaran apabila nilai rentetan berbeza daripada `JWT`; ia tidak menguatkuasakan semantik profil. Medan `cty` boleh menerangkan kandungan bersarang, tetapi penyahkod semasa tidak mempunyai laluan pemprosesan token bersarang dan tidak mentafsir medan itu.
Penaipan eksplisit boleh membantu pengesah memisahkan kelas token yang berbeza apabila dasarnya mentakrifkan nilai yang dijangkakan. Cek itu masih milik pengesah itu. Token tidak boleh menjadikan dirinya sebagai token akses sahaja dengan mengumumkan label pilihan, dan panel nyahkod tidak boleh menentukan titik akhir aplikasi mana yang harus menggunakannya.
kanak — pengecam kunci yang membolehkan pengesah memutar kunci tanpa masa henti
`kid` ialah pengecam kunci, bukan bahan utama dan bukan bukti pemilikan. Perkhidmatan yang memutar beberapa kunci yang dipercayai boleh menggunakan konteks pengeluar yang disahkan dan pengecam terhalang untuk mencari calon. Pengecam mesti kekal sebagai input kepada carian terkawal dan bukannya laluan fail, serpihan pertanyaan atau URL sewenang-wenangnya.
ToolAcre meninggalkan `kid` kelihatan dalam pengepala JSON tetapi tidak menyelesaikannya. Sekatan itu penting: tiada stor kunci yang dipercayai tersedia untuk halaman penyahkodan awam. Jika 401 mengikuti putaran, bandingkan pengecam yang dipaparkan dengan inventori kunci bahagian pelayan dan log tanpa menganggap kunci cadangan token itu sah.
jku, x5u, jwk dan x5c — medan pengepala yang menghala kekunci dan sebab pengesah tidak boleh mengambil atau mempercayainya secara membuta tuli
Medan seperti `jku` dan `x5u` boleh menamakan lokasi, manakala `jwk` dan `x5c` boleh membawa data berkaitan kunci. Kehadiran mereka tidak menjadikan lokasi atau nilai tersebut dipercayai. Mengambil URL atau menerima bahan terbenam semata-mata kerana pengepala yang tidak disahkan membekalkannya menyerahkan keputusan keselamatan kepada peminta.
Pengesah selamat memperoleh kunci melalui hubungan pengeluar dan dasar rangkaian yang ditetapkan di luar token. ToolAcre tidak mengambil URL pengepala mahupun membina kepercayaan daripada kunci terbenam. Semasa semakan, melihat salah satu medan ini ialah gesaan untuk memeriksa konfigurasi pengesah, bukan arahan untuk mengikuti pengepala.
crit — sambungan yang mesti difahami atau ditolak oleh pengesah
`crit` memberi isyarat bahawa sambungan tertentu memerlukan pemahaman oleh penerima. Pengesah yang menyokong sambungan sedemikian memerlukan jalan pelaksanaan dan penolakan yang jelas untuk nama kritikal yang tidak diketahui. Mengabaikan penanda kritikal yang tidak dikenali boleh membuatkan pengeluar dan pengguna mentafsir kandungan yang dilindungi secara berbeza.
Pelaksanaan nyahkod sahaja tidak memproses `crit`, jadi ia boleh menunjukkan tatasusunan mentah tanpa menuntut keserasian. Ini adalah satu lagi sempadan antara pemeriksaan dan pengesahan. Jika token pengeluaran bergantung pada sambungan kritikal, sahkan gelagat dalam pustaka dan konfigurasi sebenar dan bukannya membuat kesimpulan sokongan daripada JSON yang boleh dibaca.
Contoh yang berkesan — membaca tajuk yang realistik dan memutuskan medan yang memaklumkan pengesahan dan yang sahaja bermaklumat
Pertimbangkan `{"alg":"RS256","typ":"JWT","kid":"rotate-7"}`. ToolAcre cantik-cetak ketiga-tiga medan dan menerangkan bahawa pengesahan RS256 memerlukan kunci awam pengeluar. Penyemak boleh mencatat algoritma yang diisytiharkan dan pengecam kunci, kemudian membandingkannya dengan dasar disematkan pelayan dan set kunci yang dipercayai.
Medan memaklumkan penyiasatan tetapi memutuskan apa-apa secara bebas. Jika pelayan sahaja membenarkan algoritma lain, tidak dapat menjumpai `rotate-7` dalam set pengeluar yang betul atau menolak tandatangan, pengepala boleh dibaca tidak mengatasi hasil tersebut. Begitu juga, menukar teks pengepala tanpa mengira semula tandatangan yang sah tidak boleh diterima.
Bawa pulang: pengepala ialah input, bukan kuasa — penyahkod ToolAcre JWT menunjukkan pengepala supaya anda boleh membacanya; pengesah mesti memutuskan secara bebas perkara yang perlu dipercayai
Anggap pengepala JWT sebagai input, bukan kuasa. Nilainya boleh membantu memilih antara pilihan yang telah dibenarkan oleh konfigurasi, mengenal pasti kemungkinan masalah putaran atau menerangkan ketidakpadanan profil. Mereka tidak boleh mewujudkan kepercayaan dalam algoritma, kunci, URL atau jenis token mereka sendiri.
Gunakan ToolAcre untuk membaca pengepala ujian dan memaparkan nilai yang mencurigakan seperti tiada `alg`, `none` atau `typ` yang tidak dijangka. Kemudian beralih ke pengesah yang dikonfigurasikan untuk setiap keputusan berbangkit. Penyahkodan tidak membuktikan ketulenan, integriti, kebenaran atau identiti pengeluar, tidak kira betapa munasabahnya pengepala itu kelihatan.