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é? P>
Le long des mêmes lignes que la tortue SVN, Spotify et Skype. P>
edit: strong> 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. P>
3 Réponses :
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. p>
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);
Il y a beaucoup de Recommandations A > Référence des mots de passe dans MSDN. Vous allez avoir besoin de trouver une enveloppe gérée pour cryptprotectData p>
System.security.Cryptography.ProtectedData est i> une enveloppe gérée pour CryptProteintData. Voir ma réponse ci-dessus.
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.