2015-10-11 21 views
5

Sono nuovo utilizzando JWT e flask-jwt quindi eseguo il example dove trovo nei documenti. Ho letto this per una migliore comprensione di JWT.flask-jwt Come gestire un token?

Ma ora mi chiedo come devo gestire più di un token? Voglio dire, un utente pubblica le sue credenziali su "myserver/auth" e quindi restituisce un token ad un client. Quando il client invia una nuova richiesta, deve inviare il token.

La mia domanda è come so a cosa "token" appartiene l'utente e dove sono memorizzati i "token"?

+0

Ho finalmente capito che questa è una domanda stupida. Presto risponderò. – Ricardo

+0

Scriverò una risposta questo fine settimana. – Ricardo

risposta

2

JWTs costituiti da tre parti separate da punti, che sono (.):

  • Header
  • Payload
  • Firma

Pertanto, un JWT tipicamente è simile al seguente.

xxxxx.yyyyy.zzzzz 

Vediamo una breve secondo RFC e this

Header

L'intestazione consiste tipicamente di due parti: il tipo di token, che è JWT, e l'algoritmo di hashing come HMAC SHA256 o RSA.

{ 
    "alg": "HS256", 
    "typ": "JWT" 
} 

Payload

La seconda parte del token è il carico utile, che contiene rivendicazioni. I reclami sono affermazioni su un'entità (in genere, l'utente) e ulteriori metadati. Questa è la parte interessante perché all'interno del token possiamo controllare quale appartiene. { "userid": "1234567890", "expiration_date": "2016-05-129" }

Quando si genera un nuovo token possiamo specificare i dati saranno payload contiene in modo che possiamo aggiungere userid per identificare un utente e data di scadenza per verificare se è il momento di chiederne uno nuovo.

Firma

Per creare la parte di firma si deve prendere l'intestazione codificata, il payload codificato, un segreto, l'algoritmo specificato nell'intestazione, e firmare questo. La firma viene utilizzata per verificare che il mittente del JWT sia chi dice di essere e per garantire che il messaggio non sia stato modificato nel modo.

lato Server

Dobbiamo mantenere la nostra chiave segreta nel lato server, quindi, siamo in grado di decifrare un carico utile valida e verificare quale utente appartiene. In questo modo siamo liberi di evitare i token del negozio, perché ogni token memorizza abbastanza dati per convalidare i nostri utenti.

Come rinnovare il token ?: dal lato client

Il processo di generare un rinnovato Token è lo stesso, in modo che il lato client dovrebbe richiedere un servizio di rinnovare (richiesta HTTP come www.myhost.it/renew) e invia il vecchio token per generare quello nuovo. Ricorda che puoi controllare quale utente appartiene quel token, quindi il token di rinnovo dovrebbe contenere lo stesso carico utile ma con data di scadenza diversa.

single sign-on

Possiamo usare JWT con più strategie come single sign-on al fine di garantire un solo utente con stesse credenziali viene registrato allo stesso tempo.

+3

Hai letteralmente copiato letteralmente da 'https: // jwt.io/introduction /' e non hai dato il credito dell'autore originale (link) indietro. BOO per furto di proprietà intellettuale. Booooooo. –

Problemi correlati