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.

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.


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).


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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.