8
votes

Enregistrement des informations d'identification de l'utilisateur dans une application Windows

Il existe une meilleure façon de stocker des informations d'identification dans une application Windows .NET, qu'il s'agisse d'une API intégrée ou d'un algorithme de cryptage recommandé?

Le long des mêmes lignes que la tortue SVN, Spotify et Skype.

edit: Mon intention est d'utiliser un service Web qui renvoie un jeton de son service d'authentification. Les autres services acceptent ensuite que le jeton comme paramètre. Cependant, le jeton expire après 30 minutes alors stocker le jeton lui-même inutile pour cette tâche.


1 commentaires

Juste au cas où vous ne l'auriez pas rencontré avant: Conception d'un système d'authentification: un dialogue dans quatre Scènes est un excellent article sur les principes de Kerberos; Je pense que cela peut être intéressant dans le contexte de la création de votre service d'authentification.


3 Réponses :


0
votes

La meilleure pratique n'est jamais de stocker des informations d'identification, uniquement des jetons de Kerberos ... Malheureusement, toutes les ressources ne permettent pas une telle authentification.


0 commentaires

14
votes

Il semble que l'utilisation de protégez data ( qui enveloppe le API de protection des données Windows ) est mon meilleur choix , comme il a la possibilité de chiffrer en fonction de l'utilisateur actuellement connecté.

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 commentaires

0
votes

1 commentaires

System.security.Cryptography.ProtectedData est une enveloppe gérée pour CryptProteintData. Voir ma réponse ci-dessus.