2008-11-05 25 views
6

Tengo una aplicación que enviará correos electrónicos autenticados utilizando System.Net.Mail y System.Net.NetworkCredential mi pregunta es cómo debo almacenar la contraseña que se necesita para crear un objeto NetworkCrednetial?Cuál es el mejor mecanismo para almacenar la configuración de autenticación en una aplicación de WinForms

La aplicación no tiene un inicio de sesión pero podría configurar una opción que permita al usuario ingresar sus credenciales de correo electrónico (en casi todos los casos, este será su inicio de sesión de Windows). No puedo usar Active Directory porque no todos los clientes lo usan.

Pude obtener la contraseña del usuario y luego conservarla en el registro de usuarios, un archivo o una base de datos. Obviamente tendré que encriptarlo. No estoy muy familiarizado con el cifrado, por lo que se apreciarán algunos indicadores si la gente piensa que es el mejor mecanismo.

Mi preferencia sería evitar tener que almacenar algo, así que ¿hay alguna forma de evitar almacenar las credenciales, tal vez puedo obtenerlas desde el inicio de sesión actual o en otro lugar?

Respuesta

3

Para almacenar un nombre de usuario y contraseña (en Windows) use el DPAPI. La interfaz de .Net es ProtectedData y las clases de ProtectedMemory.

Pero primero, podría intentar si el UseDefaultCredentials o DefaultNetworkCredentials funciona para su entorno.

+0

Esta no es mi solución ideal pero parece ser la mejor opción. DefaultCredentials no funcionará para mí, pero solicitaré la contraseña y la almacenaré utilizando la clase ProtectedData. Gracias –

0

También puede usar la interfaz de usuario de credenciales Win32: existe una serie de ejemplos para usar esto desde .NET, incluido this one on MSDN.

Cuestiones relacionadas