Tengo una aplicación WPF de escritorio que se autentica con Dynamics CRM 2011. Solicito el nombre de usuario y la contraseña del usuario y los uso para conectarse a Dynamics CRM 2011 usando CrmConnection.parse("url={2};Username={1};Password{2}",CRMServerUrl, Username,Password)
. Esta clase luego se conecta al servidor CRM utilizando las credenciales proporcionadas (autenticadas en Active Directory).
El enigma con el que estoy luchando es que parte del diseño de la aplicación es que la autenticación a CRM solo es necesaria una vez. Todas las autenticaciones pasadas la primera deben realizarse automáticamente utilizando las credenciales que el usuario ingresó anteriormente (y sí, el usuario puede cambiarlas en la aplicación si es necesario). Esto significa que necesito almacenar contraseñas, pero no puedo hacerles hash.
Actualmente, utilizo los métodos sugeridos por Jon Galloway en Cifrado de contraseñas en un archivo de .NET app.config . Un compañero de trabajo lo recomendó. Leí algunas otras preguntas sobre este tema, pero algunos de los conceptos como las claves derivadas, el cifrado de hardware o el envío de un valor derivado son puntos ciegos o no son posibles dentro de las restricciones de diseño.
¿Cuáles son mis opciones?