2008-11-05 6 views
6

J'ai une application qui va envoyer des emails authentifiés en utilisant System.Net.Mail et System.Net.NetworkCredential ma question est comment dois-je stocker le mot de passe qui est nécessaire pour créer un objet NetworkCrednetial?Quel est le meilleur mécanisme pour stocker les paramètres d'authentification dans une application WinForms

L'application n'a pas de connexion mais je pourrais configurer une option qui permet à l'utilisateur d'entrer leurs informations d'identification (dans presque tous les cas ce sera leur connexion Windows). Je ne peux pas utiliser Active Directory car tous les clients ne l'utilisent pas.

Je pourrais obtenir le mot de passe de l'utilisateur, puis le conserver dans le registre des utilisateurs, un fichier ou une base de données. Évidemment, je devrais le crypter. Je ne suis pas très familier avec le cryptage donc certains pointeurs seraient appréciés si les gens pensent que c'est le meilleur mécanisme. Ma préférence serait d'éviter d'avoir à stocker quoi que ce soit, donc est-il possible de stocker les informations d'identification moi-même, peut-être je peux l'obtenir à partir de la connexion actuelle ou ailleurs?

Répondre

3

Pour stocker un nom d'utilisateur et un mot de passe (sous Windows), utilisez le DPAPI. L'interface .Net à lui est les classes ProtectedData et ProtectedMemory.

Mais d'abord, vous pouvez essayer si le UseDefaultCredentials ou DefaultNetworkCredentials fonctionne pour votre environnement.

+0

Ce n'est pas ma solution idéale, mais semble être la meilleure option. DefaultCredentials ne fonctionnera pas pour moi mais je demanderai le mot de passe et le stockerai en utilisant la classe ProtectedData. Merci –

0

Vous pouvez également utiliser l'interface utilisateur Win32 Credentials: il existe un certain nombre d'exemples d'utilisation de .NET, y compris this one on MSDN.

Questions connexes