2015-06-29 17 views
6

Questa è la mia messa a punto:Conservare JWT token nel biscotto

  • 1 server di autenticazione che dà fuori JWT token di autenticazione successo .
  • Più server di risorse API che forniscono informazioni (quando l'utente è autenticato).

Ora voglio creare il mio frontend ASP.NET MVC. Va bene prendere il token, che ricevo dopo l'autenticazione, e metterlo in un cookie in modo che possa accedervi con ogni chiamata sicura che devo fare? Io uso la DLL RestSharp per fare le mie chiamate http. Se ha un difetto di sicurezza, allora dove dovrei conservare il mio token?

Vorrei usare questo codice per il cookie:

  System.Web.HttpContext.Current.Response.Cookies.Add(new System.Web.HttpCookie("Token") 
     { 
      Value = token.access_token, 
      HttpOnly = true 
     }); 
+0

assicurati che sia anche HTTPS solo aggiungendo il flag di sicurezza! – Tilo

+0

[Rispondi] (http://stackoverflow.com/a/40376819/204699) alla domanda correlata su dove memorizzare il token nelle app del browser potrebbero contenere utili informazioni aggiuntive. –

risposta

8

Sei sulla strada giusta! Il cookie dovrebbe sempre avere il flag HttpOnly, l'impostazione di questo flag impedirà all'ambiente JavaScript (nel browser Web) di accedere al cookie. Questo è il modo migliore per prevenire gli attacchi XSS nel browser.

È inoltre necessario utilizzare il flag Secure in produzione, per garantire che il cookie venga inviato solo tramite HTTPS.

È inoltre necessario prevenire gli attacchi CSRF. In genere ciò avviene impostando un valore in un altro cookie, che deve essere fornito ad ogni richiesta.

Lavoro a Stormpath e abbiamo scritto molte informazioni sulla sicurezza front-end. Questi due messaggi possono essere utili per comprendere tutte le sfaccettature:

Token Based Authentication for Single Page Apps (SPAs)

https://stormpath.com/blog/build-secure-user-interfaces-using-jwts/

+0

Cool grazie per le informazioni! – Kaizer

+2

Grazie per le informazioni. Qualche piano per scrivere qualcosa sull'integrazione di .NET Identity 2.0? –

+0

@andrea: è un follow-up in ritardo, ma ho appena scritto un articolo su ASP.NET + Stormpath: https://stormpath.com/blog/10-minute-asp-net-user-authentication –

0

State generare il proprio JWTs?

Se sì, è consigliabile utilizzare un algoritmo di firma basato su crittografia asimmetrica, come "RS256" o "RS512" - in questo modo è possibile verificare le attestazioni nell'applicazione client senza condividere il segreto privato.

Hai davvero bisogno di passare il JWT nel Cookie?

Potrebbe essere più sicuro inserire semplicemente un ID casuale nel cookie, che fa riferimento al token di accesso JWT e creare la magia di de-referenziamento sul server che serve la tua web-app.

+0

potresti fornire codice, come si memorizza jwt nel cookie per favore? supponiamo 'stringa token = YOUR_TOKEN', e si sta codificando nella classe di avvio – sepehr