none
Problemas con escritura en BBDD desde Silverlight RRS feed

  • Pregunta

  • Tengo una aplicación Silverlight que accede a traves de un servicio WCF Data Service a una estructura de Entity Framework en el servidor Web.

    El acceso a datos se realiza correctamente pero a la hora de Actualizar (Alta, baja o modificación) no funciona ya que accede con un usuario que no es el indicado.

    el el web.config he incluido una linea de

    <identity impersonate="true" userName="---------------" password="-----------" />

    para que los accesos a la base de datos se realice con ese usuario contraseña y en el inicio y acceso inicial a los datos esto se hace correctamente y en el SQL-Server se crea un acceso con dicho usuario y recoge los datos.

    El problema es que al modificar los datos y realizar el SaveChanges() del contexto se crea otro trabajo con un usuario diferente y sin privilegios. Si lo ejecuto en local --\ASPNET y si lo ejecuto en la red un usuria de NETWORKSERVICES. Genera un error 202 que se soluciona si dicho usuario estaría dado de alta en el SQLSERVER como propietario de la BBDD.

    Lo estraño de todo es que este error se ha generado despues de llevar bastante tiempo desarrollando y probandoa si que ahora me encuentro con que no se quie es lo que ha variado.

    Además si lo ejecuto desde el entorno de Debug del VS2008 funciona perfectamente.

    Agradecería cualquier ayuda.

    Un Saludo

    miércoles, 21 de abril de 2010 14:28

Respuestas

  • Hola Gerardo.

    aunque puedes hacer uso de la suplantacion de identidad, realmente tiene unos marcos finitos y deberias de recurrir a ella solo en caso de absoluta necesidad, es decir, si no se puede realizar de otra forma.

    En un principio yo solo realizo suplantacion para realizar acceso a componetes COM, ya que estos requieren de elevados privilegios para ejecutarse (a no ser que se modifiquen).

    En el caso del uso de servicios WCF, no hace falta realizar una suplantacion para hacer uso de ellos, el usuario de internet accede a los servicios WCF y desde el servidor IIS se accede a la BD mediante Entity framework al cual le especificas la cadena de conexion mediante un usuario que deberias de crear en la BBDD con los permisos deseados para una base de datos en concreto. Esta es la forma habitual de trabajar con acceso a datos.

    Entonces, deberias de crearte un usuario en la BBDD con permisos de escritura y lectura y/o dueño de la BBDD especifica, de modo que este usuario pueda realizar modificaciones y otras acciones, luego este usuario es el que deberas usar en la cadena de conexion de EntityFramework para realizar las operaciones que desees. De este modo evitas realizar una suplantacion que puede ser un problema mayor al acceder al servidor IIS con privilegios elevados.


    Saludos
    David González
    jueves, 22 de abril de 2010 15:35