Quando devo invalidare una cache delle credenziali di un utente?

1

Sviluppiamo un'applicazione client Windows che memorizza localmente nella cache le credenziali di un utente per la connessione alla nostra applicazione server utilizzando API di gestione delle credenziali di Windows .

La nostra logica di memorizzazione nella cache funziona nel seguente modo:

  1. L'utente apre l'applicazione e seleziona un server nell'interfaccia utente. Quindi interroga il server per i requisiti di autenticazione. (Se non sono necessarie credenziali, ci colleghiamo senza autenticazione.)
  2. L'applicazione legge la cache per vedere se ci sono credenziali memorizzate nella cache.
  3. Se sono presenti credenziali memorizzate nella cache , vengono utilizzate. In caso contrario, l'API di Windows viene utilizzata per visualizzare una finestra di dialogo .
  4. L'applicazione tenta di autenticare con il server utilizzando le credenziali.
  5. Se la connessione ha esito positivo, le credenziali utilizzate sono memorizzate nella cache per la durata della sessione di Windows (questa è una funzionalità dell'API di Windows). In caso contrario, svuota la cache e torna al passaggio 3.

La domanda è: ci sono altre situazioni valide in cui la cache delle credenziali dovrebbe essere cancellata? In altre parole, quali considereresti come best practice su come gestire la durata e la logica di invalidazione per questo informazioni potenzialmente sensibili?

(Poiché probabilmente verrà richiesto, le informazioni memorizzate utilizzando questa API vengono crittografate utilizzando la nostra logica di crittografia e archiviate in memoria tramite SecureString. Indubbiamente esistono potenziali lacune in questo approccio, ma ciò vale per un'altra discussione.)

    
posta Kevin McCormick 22.12.2011 - 22:31
fonte

1 risposta

2

Dipende dalla sensibilità di sicurezza dell'applicazione e dall'ambiente in cui viene utilizzata.

Se questa applicazione viene utilizzata da un'azienda i cui dipendenti disconnettono le proprie macchine alla fine dei propri turni, è probabilmente corretto mantenere le credenziali memorizzate nella cache per la sessione di Windows. Se lasciano i loro computer registrati e incustoditi, allora qualcun altro con accesso fisico potrebbe dirottare la loro sessione.

Un'alternativa è mettere in cache le credenziali (o un token di sessione) per la sessione dell'applicazione client (o fino a quando l'utente gli dice di disconnettersi). Ciò consente all'utente di terminare solo quella sessione quando sono terminate, il che andrebbe bene per un'applicazione più sensibile. Un timeout di inattività potrebbe anche attivare una disconnessione.

Nel valutare quale approccio sia appropriato per una situazione givin, utilizzerei un approccio rigoroso (meno cache delle credenziali) come punto di partenza, e vediamo se c'è un caso in cui più cache non causerebbe un problema.

    
risposta data 22.12.2011 - 23:03
fonte

Leggi altre domande sui tag