Apa perbedaan antara JWT dan Bearer Token?

107

Saya mempelajari sesuatu tentang Otorisasi seperti Basic, Digest, OAuth2.0, JWTs, dan Bearer Token.

Sekarang saya punya pertanyaan.

Anda tahu JWT sedang digunakan sebagai Access_Token dalam standar OAuth2.0. JWT muncul di RFC 7519, dan Bearer Token di RFC 6750.

Misalnya, Pembawa:

Authorization: Bearer <token>

Saya biasa mengirim token ke server oleh AJAX atau menambahkan token ke string kueri url. Saya tahu bahwa token juga dapat dikirim dengan menambahkannya ke header permintaan. Apakah itu berarti token harus ditambahkan ke header Authorization Bearer?

Bisakah Anda memberi tahu saya hubungan antara JWT dan Bearer Token? Terima kasih banyak.

laoqiren.dll
sumber

Jawaban:

85

JWT adalah standar encoding untuk token yang berisi payload data JSON yang dapat ditandatangani dan dienkripsi.

JWT dapat digunakan untuk banyak hal, di antaranya adalah token pembawa, yaitu sepotong informasi yang dapat Anda berikan ke beberapa layanan yang berdasarkan Anda memilikinya (Anda menjadi "pembawa") memberi Anda akses ke sesuatu.

Token pembawa dapat disertakan dalam permintaan HTTP dengan berbagai cara, salah satunya (mungkin yang lebih disukai) adalah header Otorisasi. Tetapi Anda juga bisa memasukkannya ke dalam parameter permintaan, cookie, atau badan permintaan. Itu sebagian besar antara Anda dan server yang Anda coba akses.

Thilo
sumber
Lalu bagaimana cara mengurai token di header Authorization, ada Bearer, saya harus menggunakan String.slice (), apakah ada middleware untuk mengurai?
laoqiren
Saya menggunakan Node.js
laoqiren
Gunakan auth-headerpaket jika Anda menginginkan parser minimal
Demurgos
1
Atau cukup gunakan String.slice () :)
Paul Siersma
141

Jawaban singkat

JWT adalah cara mudah untuk menyandikan dan memverifikasi klaim .

Token Bearer hanyalah string, berpotensi arbitrer, yang digunakan untuk otorisasi.

Konteks (waktu cerita)

Beberapa tahun yang lalu, sebelum revolusi JWT, a <token>hanyalah string yang tidak memiliki arti intrinsik, misalnya 2pWS6RQmdZpE0TQ93X. Token itu kemudian dicari di database, yang menyimpan klaim untuk token itu. Kelemahan dari pendekatan ini adalah bahwa akses DB (atau cache) diperlukan setiap kali token digunakan.

JWT menyandikan dan memverifikasi (melalui penandatanganan) klaim mereka sendiri . Ini memungkinkan orang mengeluarkan JWT berumur pendek yang tidak memiliki kewarganegaraan (baca: mandiri, tidak bergantung pada orang lain). Mereka tidak perlu memukul DB. Ini mengurangi beban DB dan menyederhanakan arsitektur aplikasi karena hanya layanan yang mengeluarkan JWT yang perlu dikhawatirkan mengenai lapisan DB / persistensi (yang refresh_tokenmungkin pernah Anda temui).

rmharrison.dll
sumber
Terima kasih, dan bagaimana dengan Mac dalam Otorisasi, apakah Mac dan Bearernya sama?
laoqiren
Jawaban terbaik di tempat lain, misalnya: dzone.com/articles/oauth-20-bearer-token-profile
rmharrison