Bagaimana saya bisa men-decode payload JWT menggunakan JavaScript? Tanpa perpustakaan. Jadi token hanya mengembalikan objek muatan yang dapat dikonsumsi oleh aplikasi front-end saya.
Token contoh: xxxxxxxxx.XXXXXXXX.xxxxxxxx
Dan hasilnya adalah payload:
{exp: 10012016 name: john doe, scope:['admin']}
javascript
jwt
Chrisk8er
sumber
sumber
Jawaban:
Fungsi parser JWT teks unicode:
sumber
JSON.parse(window.atob(base64))
untuk membuatnya berfungsi. Tepatreturn JSON.parse(atob(base64));
dan kemudianpostman.setEnvironmentVariable("userId", parseJwt(jsonData.access_token));
"access_token" dalam kasus saya adalah kunci nilai token sebagai respons (mungkin berbeda dalam kasus Anda).var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
jwt-decode
modul karena modulnya kecil tetapi penanganannya sedikit lebih baik.Fungsi sederhana dengan try-catch
Terima kasih!
sumber
atob
telah mengetahui masalah unicodeAnda bisa menggunakan jwt-decode , jadi Anda bisa menulis:
sumber
Anda dapat menggunakan
atob()
fungsi javascript murni untuk mendekode token menjadi string:atau parsing langsung menjadi objek json:
membaca tentang
atob()
danbtoa()
fungsi javascript bawaan Pengkodean dan penguraian base64 - API Web | MDN .sumber
@ Peekje akan berfungsi, tetapi Anda akan memiliki masalah dengan unicode. Untuk memperbaikinya saya menggunakan kode di https://stackoverflow.com/a/30106551/5277071 ;
sumber
Karena objek "window" tidak ada di lingkungan nodejs, kita bisa menggunakan baris kode berikut:
Ini bekerja untuk saya dengan sempurna. Semoga ini bisa membantu.
sumber
Jika menggunakan node, Anda mungkin harus menggunakan paket buffer:
sumber
Saya menggunakan fungsi ini untuk mendapatkan payload, header, exp (Expiration Time), iat (Issued At) berdasarkan jawaban ini
sumber
semua fitur jwt.io tidak mendukung semua bahasa. Di NodeJs Anda dapat menggunakan
sumber
Saya menemukan kode ini di jwt.io dan berfungsi dengan baik.
Dalam beberapa kasus (platform pengembangan tertentu),
jawaban terbaik (untuk saat ini) menghadapi masalah panjang base64 yang tidak valid.
Jadi, saya membutuhkan cara yang lebih stabil.
Saya harap ini akan membantu Anda.
sumber
Guy dan Peheje sudah menjawab pertanyaan itu. Untuk pemula total seperti saya, sangat membantu untuk memiliki garis impor yang ditentukan dalam contoh.
Juga butuh beberapa menit bagi saya untuk mengetahui bahwa token adalah set lengkap kredensial yang akan diposting kembali (seluruh token JWT, bukan hanya bagian idToken dari itu). Langsung setelah Anda mengetahuinya ..
sumber
Solusi NodeJS Sederhana untuk Mendekode Token Web JSON (JWT)
sumber
Jawaban berdasarkan dari GitHub - auth0 / jwt-decode . Mengubah input / output untuk memasukkan string splitting dan mengembalikan objek {header, payload, signature} sehingga Anda bisa meneruskan token keseluruhan.
sumber
Berikut adalah solusi yang lebih kaya fitur yang baru saya buat setelah mempelajari pertanyaan ini:
Berikut beberapa contoh penggunaan:
Saya tidak dapat membuat runnable itu di alat snippet kode StackOverflow, tapi di sini kira-kira apa yang akan Anda lihat jika Anda menjalankan kode itu:
Saya membuat
parseJwt
fungsi selalu mengembalikan objek (pada tingkat tertentu karena alasan mengetik statis).Ini memungkinkan Anda untuk menggunakan sintaksis seperti:
Kemudian Anda dapat menguji pada waktu berjalan untuk jenis kesalahan tertentu dan menghindari tabrakan penamaan.
Jika ada yang bisa memikirkan upaya rendah, perubahan bernilai tinggi pada kode ini, jangan ragu untuk mengedit jawaban saya untuk kepentingan
next(person)
.sumber
Berdasarkan jawaban di sini dan di sini :
sumber
Menjalankan Javascript node.js express, saya harus menginstal paket sebagai berikut:
lalu di kode app.js saya dapatkan paket:
Kemudian jalankan kodenya:
Kemudian keajaiban:
sumber