Asignar Credenciales a los servicios Web de Reporting Services
Una de las cosas que más me gustan en Reporting Services, es que toda la funcionalidad que utiliza para mostrar y manejar los informes está expuesta a través de unos Servicios Web.
Eso significa que si no queremos mostrar los informes en el ReportViewer, en el Report Manager o simplemente vamos a agregar nueva funcionalidad sin utilizar estos, es posible con dichos Servicios :)
En este post no voy a explicar toda la funcionalidad que hay en ellos, pero sí como agregarles las credenciales necesarias para poder utilizarlos. Además, aclarar que esto sólo sirve para las versiones de servidor, incluidas las express editions y no para informes locales ;).
Lo primero y necesario es tener un usuario agregado al Report Manger que tenga permisos para trabajar.
Para ello abrimos nuestro Report Manager, de las dos pestañas principales (Contenido y propiedades) nos vamos a propiedades y pulsamos en Nueva asignación de funciones.
Una vez pulsada esta opción, tan sólo tendremos que agregar el nombre de nuestra máquina en la red (en caso de no tener AD) y si tenemos Active Directory pues escribimos el usuario que nosotros queramos.
Luego tan sólo tenemos que agregarle una o varias de las funciones, e incluso crear las nuestras propias y aceptar.
Por un lado ya tenemos nuestro usuario y ahora partiendo de que ya sabemos como agregar un servicio web a la aplicación (aquí tenéis uno de ejemplo que hice para exportar con los formatos de SSRS), tan sólo tendríamos que añadir algunas líneas.
Si el usuario de la máquina o de red ya está en el Report Manager, podríamos poner las credenciales por defecto:
rs.Credentials = System.Net.CredentialCache.DefaultCredentials; (en VB sin el punto y coma)
Si lo tenemos implementado via aplicación y el usuarios es un concreto para todos o simplemente el usuario no es el que se logea y usamos otro con una aplicación, le damos el usuario que necesite:
C#:
NetworkCredential credentials = new NetworkCredential();
credential.UserName = “Tu Usuario”;
credential.Password = “Su Password”;
credential.Domain = “Su dominio”;
VB:
Dim credentials As new NetworkCredential()
credential.UserName = “Tu Usuario”
credential.Password = “Su Password”
credential.Domain = “Su dominio”
Espero que os sea de utilidad :)
Un Saludo