Estoy desarrollando una aplicación de escritorio .NET winforms destinada a ejecutarse en varias sucursales bancarias como una aplicación de copia de seguridad cuando la principal (una aplicación web) no está disponible debido a problemas de conexión con el nodo central del banco. Las sucursales no cuentan con ningún servicio empresarial además de una base de datos SQL-Server. Por esa razón, la aplicación debería poder conectarse directamente al servidor SQL. Mi problema surge cuando tengo que proporcionar a la aplicación una contraseña para conectarse a la base de datos:Seguridad de cadena de conexión en la aplicación de escritorio .net
1) Almacenar la contraseña en texto claro en un archivo app.config o similar no es una opción (el cliente requiere la contraseña para encriptarse)
2) Almacenar la contraseña encriptada en un archivo de configuración lleva a la necesidad de tener una clave de cifrado localmente disponible. La clave de encriptación podría estar codificada en el código de la aplicación, pero sería fácilmente legible mediante el uso de un descompilador .net o similar.
3) El uso de un algoritmo personalizado para encriptar/descifrar tampoco funcionaría por las mismas razones que 2).
de seguridad 4) integrado no es compatible con el banco
Además, los clientes requiere que ellos deberían ser capaces de cambiar la contraseña en un lugar (dentro de una rama) sin la necesidad de pasar de un ordenador a otro actualizar archivos de configuración (que excluye la posibilidad de utilizar la clave de la máquina para cifrar la contraseña en los archivos de configuración de la máquina individual como asp.net)
¿Podría proporcionar algún otro enfoque o sugerencia para solucionar este problema? Agradecería cualquier ayuda. Gracias de antemano, Bernabé
Hola, gracias por su respuesta. Tener el acceso a los datos en un servicio autónomo independiente parece una buena forma de hacerlo (de hecho, sería fácil de implementar, siempre que ya se haya puesto toda la funcionalidad de acceso a los datos detrás de una fachada. He estado investigando un poco acerca de los servicios wcf autohospedados, y encontré que Microsoft no recomienda esa opción para entornos de producción. ¿Qué piensas sobre eso? ¿Conoces algún sistema de producción que lo use? Estoy preguntando porque yo ' es bastante nuevo para WCF. ¡Gracias! Bernabé –
Si lo aloja en la misma aplicación, AFAIK, se ejecutará bajo la misma cuenta de usuario, que no es lo que desea. Sugeriría que aloje WCF como un servicio de Windows, ya que es fácil de proteger, se ejecuta localmente y no tiene que instalar nada más en la caja, como por ejemplo IIS. Aquí hay un enlace al artículo de MSDN que describe sus opciones de alojamiento, señalando específicamente a alojarlo como un servicio de Windows. http://msdn.microsoft.com/en-us/library/bb332338.aspx#msdnwcfhc_topic4 – jvilalta
Exactamente, eso es lo que quise decir cuando eché de menos el término "self-hosted". En el artículo que acaba de publicar, se habla de "funciones de alta disponibilidad limitadas" cuando comparan el servicio de Windows con el alojamiento de IIS. Pero no son muy específicos al respecto, no conozco el clima que podría ser importante en mi caso, una sucursal podría tener no más de 20 usuarios simultáneos. –