Come memorizzare le credenziali di autenticazione nella cache per accelerare l'autenticazione

1

Sto sviluppando alcune API REST che richiedono un HTTP basic auth per accedere. Le API sono scritte in Django e l'auth si basa sul middleware di Django auth: controlla il DB, il nome utente e la password. La password è memorizzata con pbkdf2 .

Come puoi immaginare, ogni richiesta richiede tempo poiché colpisce il DB (anche con sondaggi e così via). Quindi, ho pensato a cache (usando memcache) le credenziali per controllarle prima di chiedere al DB. L'idea è di ricavare una chiave basata sui dati BasicAuth inviati in modo tale da poter interrogare la cache e recuperare le informazioni utente.

Finora ho trovato idee sotto. Ho la stringa basicauth base64 e posso:

  1. Utilizza il valore così come è la chiave per il memcache.
  2. Usa un SHA1 per cancellare la stringa base64 e usarla.
  3. Ricava Username:Password e come chiave usa pbkdf2(p,u,iterations) dove crittografo la password utilizzando il nome utente come salt. Qui, devo stare attento con le iterazioni, altrimenti potrebbe richiedere troppo tempo. Empiricamente le iterazioni sono < 100 per renderlo abbastanza veloce, che suona un po 'troppo basso.

Anche se la cache è volatile ( 120s ), la soluzione migliore (in termini di trade-off tra sicurezza e velocità) è il numero 3 per me. Qualsiasi input O posso supporre che la cache sia abbastanza sicura e posso usare il numero 1 o 2 anche se sono lontani dall'essere sicuri?

Chiunque abbia una soluzione migliore / più intelligente?

    
posta EsseTi 21.02.2017 - 17:23
fonte

0 risposte

Leggi altre domande sui tag