Introduzione a JWT: JSON Web Token (JWT) è uno standard aperto (RFC 7519) che definisce un modo compatto e autonomo per trasferire in modo sicuro le informazioni tra parti in oggetti JSON. Queste informazioni possono essere verificate e affidabili tramite firme digitali. I JWT possono essere firmati usando segreti (usando l'algoritmo HMAC) o utilizzando le coppie di chiavi pubbliche/private di RSA.
Alcuni scenari in cui i Web Token JSON sono utili:
Verifica dell'identità:Questo è il caso più comune nell'uso dei JWT. Una volta che l'utente effettua l'accesso, ogni richiesta successiva conterrà un JWT che permette all'utente di accedere alle rotte, ai servizi e alle risorse consentite da quel token. Il single sign-on è una funzione ampiamente utilizzata oggi grazie al suo basso overhead e alla facilità di utilizzo in diversi domini.
Scambio di informazioni:I JSON Web Token sono un ottimo modo per trasferire informazioni in modo sicuro tra le parti. Poiché i JWT possono essere firmati - ad esempio usando coppie di chiavi pubbliche/private - è possibile essere sicuri che il mittente sia chi dichiara di essere. Inoltre, poiché la firma viene calcolata utilizzando intestazioni e payload, puoi anche verificare che il contenuto non sia stato manomesso.
Sito ufficiale:Il login del link ipertestuale è visibile.
Analizza le informazioni JWT online:Il login del link ipertestuale è visibile.
Analizza i parametri JWT online Il login del link ipertestuale è visibile.
La mia comprensione di JWT qui sotto è sbagliata, per favore datemi qualche consiglio
Prima di tutto, questa cosa non è consigliata usarla sul sito MVC, puoi usarla in webapi, il posizionamento di questa cosa è API, non una sessione del sito sostitutivo!
asp.net tutorial sull'uso di Webapi:Il login del link ipertestuale è visibile.Non rifarò la ruota, guardando come è scritto questo articolo va bene.
La composizione di JWT
JWT è composto da tre parti: Header, Payload e Signature, con simboli a punto intermedi per formare la forma xx.yy.zz.
Si noti che per i token firmati, queste informazioni possono essere lette da chiunque, nonostante la protezione contro la manomissione. Non inserire informazioni sensibili nel contenuto valido o negli elementi di intestazione del JWT a meno che non siano criptati.
Per esempio:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
{
alg: "HS256",
typ: "JWT" }.
{
sub: "1234567890",
name: "John Doe",
iat: 1516239022 }. [firma] In termini semplici, chiunque può decifrare questo token, ma l'autenticità di queste informazioni non può essere verificata, solo il server che ha generato questo token può verificarne l'autenticità, quindi non memorizzare informazioni sensibili al suo interno.
C'è un problema qui: se l'utente cambia la password o gli viene vietato accedere al login, come può JWT risolvere la validità del token?
La mia idea è aggiungere una stringa simile a un guid-like nella sezione Payload, e poi esistere nella cache; quando si verifica l'identità dell'utente, non solo verificare il jwt, ma anche le informazioni del payload nel jwt, possiamo controllare la validità controllando la cache.
|