Qual è la differenza tra JWT e Bearer Token?


105

Sto imparando qualcosa sull'autorizzazione come Basic, Digest, OAuth2.0, JWT e Bearer Token.

Adesso ho una domanda.

Sai che i JWT vengono utilizzati come Access_Token nello standard OAuth2.0. JWT appare in RFC 7519 e Bearer Token è in RFC 6750.

Ad esempio, il portatore:

Authorization: Bearer <token>

Ero solito inviare token al server tramite AJAX o aggiungere token alla stringa di query dell'URL. So che un token può essere inviato anche aggiungendolo a un'intestazione della richiesta. Ciò significa che il token deve essere aggiunto all'intestazione del portatore dell'autorizzazione?

Potresti dirmi la relazione tra JWT e Bearer Token? Molte grazie.

Risposte:


85

JWT è uno standard di codifica per token che contiene un payload di dati JSON che può essere firmato e crittografato.

JWT può essere usato per molte cose, tra queste sono i bearer tokens, cioè un'informazione che puoi presentare a un servizio che in virtù del fatto che tu lo abbia (tu sei il "portatore") ti garantisce l'accesso a qualcosa.

I token bearer possono essere inclusi in una richiesta HTTP in diversi modi, uno di questi (probabilmente il preferito) è l'intestazione di autorizzazione. Ma potresti anche metterlo in un parametro di richiesta, un cookie o il corpo della richiesta. Questo è principalmente tra te e il server a cui stai tentando di accedere.


Quindi come analizzare il token nell'intestazione di autorizzazione, c'è un Bearer, devo usare String.slice (), c'è qualche middleware per analizzarlo?
laoqiren

Sto usando Node.js
laoqiren

Usa il auth-headerpacchetto se vuoi un parser minimo
Demurgos

1
O semplicemente usa String.slice () :)
Paul Siersma

138

Risposta breve

I JWT sono un modo conveniente per codificare e verificare i reclami .

Un token Bearer è solo una stringa, potenzialmente arbitraria, utilizzata per l'autorizzazione.

Contesto (tempo della storia)

Qualche anno fa, prima della rivoluzione JWT, a <token>era solo una stringa senza significato intrinseco, ad esempio 2pWS6RQmdZpE0TQ93X. Quel token è stato quindi cercato in un database, che conteneva le attestazioni per quel token. Lo svantaggio di questo approccio è che l'accesso al database (o una cache) è richiesto ogni volta che viene utilizzato il token.

I JWT codificano e verificano (tramite firma) le proprie affermazioni . Ciò consente alle persone di emettere JWT di breve durata che sono apolidi (leggi: autonomo, non dipendere da nessun altro). Non hanno bisogno di premere il DB. Ciò riduce il carico del DB e semplifica l'architettura dell'applicazione perché solo il servizio che emette i JWT deve preoccuparsi di raggiungere il livello DB / persistenza (quello refresh_tokenche probabilmente hai incontrato).


Grazie, e per quanto riguarda il Mac in autorizzazione, il Mac e il portatore sono uguali?
laoqiren


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.