2009-08-07 19 views
6

Esiste un modo migliore per archiviare le credenziali in un'applicazione Windows .NET, che si tratti di un'API incorporata o di un algoritmo di crittografia consigliato?Salvataggio delle credenziali utente in un'applicazione Windows

Sulla stessa falsariga di Tortoise SVN, Spotify e Skype.

Modifica: La mia intenzione è di utilizzare un servizio Web che restituisce un token dal suo servizio di autenticazione. Gli altri servizi accettano quindi quel token come parametro. Tuttavia, il token scade dopo 30 minuti, quindi la memorizzazione del token stesso è inutile per questa attività.

+0

Nel caso in cui non lo avessi incontrato prima: [Progettazione di un sistema di autenticazione: un dialogo in quattro scene] (http://web.mit.edu /kerberos/www/dialogue.html) è un grande articolo sui principi di Kerberos; Penso che possa essere interessante nel contesto della creazione del tuo servizio di autenticazione. – Regent

risposta

12

Sembra che utilizzare ProtectedData (che include lo Windows Data Protection API) è la soluzione migliore, poiché ha la possibilità di crittografare in base all'utente attualmente connesso.

byte[] dataToEncrypt = new byte[] { ... }; 

// entropy will be combined with current user credentials 
byte[] additionalEntropy = new byte { 0x1, 0x2, 0x3, 0x4 }; 

byte[] encryptedData = ProtectedData.Protect(
    dataToEncrypt, additionalEntropy, DataProtectionScope.CurrentUser); 

byte[] decryptedData = ProtectedData.Unprotect(
    encryptedData, additionalEntropy, DataProtectionScope.CurrentUser); 
0

La pratica migliore non è mai memorizzare credenziali, solo token Kerberos ... sfortunatamente, non tutte le risorse consentono tale autenticazione.

+0

Avrei dovuto essere più specifico. Vedi il mio aggiornamento. –

0

ci sono un sacco di recomendations password Re in MSDN. Dovrai trovare un wrapper gestito per CryptProtectData

+1

System.Security.Cryptography.ProtectedData * è * un wrapper gestito per CryptProtectedData. Vedi la mia risposta sopra. –

Problemi correlati