È sicuro per esporre refreshtoken API

0

Domanda

Ho un'applicazione sviluppata utilizzando Reagire in front-end e ASP.Net Web API nel backend. Sto usando JWT per l'autorizzazione. Il processo è

  1. Quando un utente si connette e si è autenticato, 2 gettoni vengono inviati al front-end, token di accesso e di aggiornamento token. Un token di accesso è la JWT e aggiorna il token è una stringa casuale e un refresh token viene memorizzato in un database.
  2. Per ogni chiamata successiva Api token di accesso è collegato in intestazione, ho un filtro di autenticazione che convalida il token di accesso.
  3. Una volta che il token di accesso è scaduto, stato 401 è gettato con il messaggio di errore TokenExpired.
  4. Una volta che il front-end riceve 401, chiama il refresh token API per ottenere il refresh token

Il dubbio che ho è che non posso avere un filtro di autenticazione per convalidare il token di accesso di refresh token API getterà 401 a causa scaduto token di accesso, quindi ho bisogno di fare il refresh token API anonima in modo da non colpire il filtro di autenticazione. Se faccio anonimo io sto facendo una chiamata al database per ottenere il refresh token memorizzati per l'utente e di confrontarla con quella che ho ricevuto dal front-end. Così è sicuro di fare il refresh token API anonima, se non qual è il modo migliore?

asp.net-web-api c# jwt
2021-11-24 05:13:45
2
0

A Auth0, ha Creato una serie di caratteristiche in grado di attenuare i rischi associati all'utilizzo di refresh token imponendo garanzie e controlli sulla loro ciclo di vita. La nostra identità piattaforma offre refresh token di rotazione, che viene fornito anche con automatico riutilizzo di rilevamento.

Si prega di leggere il seguente argomento.

Refresh Token Di Rotazione

Refresh Token Automatico Riutilizzo Di Rilevamento

2021-11-24 05:56:21

Stiamo facendo una sorta di refresh token di rotazione. Quando un nuovo token di accesso è richiesto di convalidare con il refresh token e fornire un nuovo token di accesso e di un nuovo refresh token e il refresh token viene aggiornato nel database. Tuttavia non penso che siamo in grado di memorizzare l'elenco di tutti i refresh token generato finora come accennato in automatico il riutilizzo di rilevamento
Raghul Raman
0

La JWT firmato con preshared chiave segreta. Poiché è REST API nel backend e apolide, jwt è utilizzato per l'autorizzazione e costruire l'oggetto principale

Come dici tu, il token di accesso rappresentano l'autorizzazione, in applicazione, se il refresh token è esposto quindi il refresh token può essere presentata da un cattivo attore per ottenere un token di accesso possono utilizzare per la stessa autorizzazione.

Utilizzando un 'già condivisa segreto' indica la JWT è un HMAC unica variante di JWT, cioè non c'è la crittografia, che indica privato e coppia di chiavi pubblica invece di un "già condivisa segreto'. Così la JWT è essenzialmente una firma per il targhette di caratteristiche di sicurezza stiamo assicurando l'integrità che le richieste di JWT sono ben formate e non sono state modificate dal sottoscritto. Significa anche stesso segreto utilizzato per la firma su un'estremità, come è stato utilizzato per verificare l'altra estremità, lo stesso segreto deve essere utilizzato perché la verifica di una firma richiede che entrambe le estremità generare la firma digitale e la firma del match. Quindi no, i dati vengono criptati, quindi non dati in JWT è sensibile e ha bisogno di essere protetto.

Dato questo contesto, aggiornamento e token di accesso sono un semplice JWT che può essere generato solo da parte del titolare del segreto - se sono esposti possono essere utilizzati per effettuare le richieste di dannose finché restano validi (nbf richiesta di rimborso).

Essenzialmente questo tipo di JWT può essere utilizzato in modo improprio, se esposto a rappresentare l'identità segreta che ha firmato il JWT rappresenta, senza in realtà conoscere il segreto stesso, fino al nbf pretendiamo scade il token e un refresh token è il meccanismo per estendere la nbf pretendiamo senza avere il segreto (che si tradurrà in una nuova firma, perché il nbf richiesta di risarcimento per cambiare se utilizzato).

C'è una protezione dal token di accesso riutilizzo, è il nonce reclamo. Se non si utilizza un nonce la domanda si può leggere su come OIDC hanno implementato e fare egli stesso nella tua app. Ma come si dice, la tua app è stateless, ma si spera che il backend è una forma di stato per garantire che non nonce riutilizzo e prevenire JWT firma il riutilizzo. Per ogni nonce la JWT modifiche di firma, quindi il token di accesso modifiche e possono essere usati solo 1 volta. Così, in caso di furto si tratta di una race condition che utilizza il token prima, che notevolmente riduce il rischio, ma non è una soluzione perfetta.

2021-11-24 09:11:17

In altre lingue

Questa pagina è in altre lingue

Русский
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................