JWT'ler ile Bearer Token arasındaki fark nedir?


117

Yetkilendirme hakkında Basic, Digest, OAuth2.0, JWTs ve Bearer Token gibi bir şeyler öğreniyorum.

Şimdi bir sorum var.

JWT'lerin OAuth2.0 standardında Access_Token olarak kullanıldığını biliyorsunuz. JWT'ler RFC 7519'da ve Taşıyıcı Token RFC 6750'de görünür.

Örneğin, Taşıyıcı:

Authorization: Bearer <token>

AJAX ile sunucuya jeton gönderir veya url'nin sorgu dizesine jeton eklerdim. Bir jetonun bir istek başlığına eklenerek de gönderilebileceğini biliyorum. Bu, token'ın Yetki Taşıyıcısı başlığına eklenmesi gerektiği anlamına mı geliyor?

Lütfen bana JWT'ler ile Bearer Token arasındaki ilişkiyi söyler misiniz? Çok teşekkürler.

Yanıtlar:


93

JWT, imzalanabilen ve şifrelenebilen bir JSON veri yükü içeren belirteçler için bir kodlama standardıdır.

JWT pek çok şey için kullanılabilir, bunların arasında taşıyıcı belirteçler, yani bazı hizmetlere sunabileceğiniz ve ona sahip olmanız sayesinde ("taşıyıcı" sizsiniz) bir şeye erişmenizi sağlayan bir bilgi parçası.

Taşıyıcı belirteçleri, bir HTTP isteğine farklı şekillerde dahil edilebilir, bunlardan biri (muhtemelen tercih edilen) Yetkilendirme başlığıdır. Ancak bunu bir istek parametresine, bir tanımlama bilgisine veya istek gövdesine de koyabilirsiniz. Bu çoğunlukla siz ve erişmeye çalıştığınız sunucu arasındadır.


O halde belirteci Yetkilendirme başlığında nasıl ayrıştırılır, bir Taşıyıcı var, String.slice () kullanmalıyım, onu ayrıştırmak için herhangi bir ara yazılım var mı?
laoqiren

Node.js kullanıyorum
laoqiren

auth-headerMinimum ayrıştırıcı istiyorsanız paketi kullanın
Demurgos

1
Veya sadece String.slice () :) kullanın
Paul Siersma

146

Kısa cevap

JWT'ler, talepleri kodlamanın ve doğrulamanın uygun bir yoludur .

Bir Taşıyıcı belirteci, yetkilendirme için kullanılan, potansiyel olarak keyfi bir dizedir.

Bağlam (hikaye zamanı)

Birkaç yıl önce, JWT devriminden önce, a <token>, sadece içsel bir anlamı olmayan bir dizeydi, örneğin 2pWS6RQmdZpE0TQ93X. Bu jeton, daha sonra jetonla ilgili iddiaları tutan bir veritabanında arandı. Bu yaklaşımın dezavantajı, belirteç her kullanıldığında DB erişiminin (veya bir önbelleğin) gerekli olmasıdır.

JWT'ler kendi taleplerini kodlar ve doğrular (imzalayarak) . Bu, insanların kısa ömürlü, vatansız JWT'ler yayınlamasına olanak tanır (okuyun: bağımsız, başka kimseye bağlı değil). DB'yi vurmalarına gerek yoktur. Bu, DB yükünü azaltır ve uygulama mimarisini basitleştirir çünkü yalnızca JWT'leri yayınlayan hizmetin, DB / kalıcılık katmanına ( muhtemelen karşılaştığınız) vurma konusunda endişelenmesi gerekir .refresh_token


Teşekkürler, Yetkilendirmede Mac'e ne dersiniz, Mac ve Taşıyıcı aynı mı?
laoqiren

En iyi başka yerde yanıtlandı, örneğin: dzone.com/articles/oauth-20-bearer-token-profile
rmharrison

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.