Fran Diaz

Reporting Services, Business Intelligence, tecnologías Microsoft y otros

Email Notifications

Recent Posts

Tags

News

Community

Comunidades

  • OnobaNET
  • Grupo de usua
  • INETA
  • Culminis
  • Zona de Grupos de Usuarios Online
  • Foro MSDN Español: Colaborador
  • CartujaDotNet

Webs Amigas

Archives

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.

propiedades

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.

agregarUsuario

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 

Posted: 29/4/2009 21:51 por Fran Díaz | con 6 comment(s) |
Comparte este post:

Comentarios

angel arguijo ha opinado:

gracias por aclararlo en el report viewer podrias porfavor explicarlo para webbrowser? ej: http://mipc/reportserver - reportes - credenciales

# November 13, 2009 5:54 PM

Gerardo ha opinado:

Hola buen día.

Tengo un asunto que no he podido resolver del Reporting. Quiero configurar que los servicios Web del Report Server sea necesario loggearse (esto lo consigo configurando en el IIS que sea vía windows integrated), el problema lo tengo porque quiero evitar que desde Visual Basic se realice un deploy (si no está en el IIS el acceso anónimo no se hace) pero el problema es que si no pongo el acceso anónimo, tampoco las aplicaciones pueden ejecutar un reporte.

# March 16, 2010 7:20 PM

Victor Sarmiento ha opinado:

Hola Fran, navegando por internet encontré tu página y abusando de lo que he leído, solicito tu ayuda con un problema que llevo dos semanas sin poderlo solucionar.

Estoy desarrollando una aplicación de escritorio con VS2008 en C#, SQL Server 2008 y Reporting Services 2008 para los reportes, tengo mi red; en la PC donde tengo instalado el servidor de informes puedo accesar a ellos a través del report viewer de .net unicamente con los parámetros:

- ReportPath

- ReportUrl

Al ejecutarlo todo funciona muy bien, puedo visualizar el reporte sin problema alguno.

El problema viene, cuando deseo visualizar el reporte en otra computadora de la red, cualquiera que no sea el servidor únicamente obtengo el error "404:Unauthorized", las instancias de SQL todas habilitadas con TCP/IP, canalizaciones con nombre, el WMI habilitado para conexiones remotas, pero aún así no me ha sido posible visualizar los reportes del reporting services en las PCs clientes, yo supongo debo crear algún tipo de usuario como indicas en otro post con: dominio\nombre, pero si pongo el dominio del servidor o del cliente, recibo un error de usuario desconocido, espero te tomes el tiempo de leer mi problema y de sugerirme alguna solución, de ser así te estaré muy agradecido y prometo subir artículos de ayuda para otros usuarios, espero tu respuesta y por si acaso te dejo mi msn: vs.0@hotmail.com.

De antemano muchas gracias, saludos.

# April 17, 2010 7:07 AM

Victor ha opinado:

Hola de nuevo, soy el que escribió el comentario anterior y después de seguir investigando un poco, creo que voy a replantear la pregunta, la cuál es:

Si deseo agregar un usuario para que pueda visualizar los reportes del Report Server desde una PC cliente, como debo realizar el alta de ese usuario?

1. Agregar un nuevo usuario a la instancia de SQL Server en Seguridad_Inicios de sesión.

2. Agregar un nuevo usuario a la instancia de SQL Server en Bases de datos_Report Server_Seguridad_Usuarios.

3. Conectarme al servidor Reporting Services desde SQL MS en Seguridad_Funciones.

4. En el Administrador Web de Reporting Services_Configuración del sitio_Seguridad_Nueva asignación de funciones:

- Supongo que el dominio se refiere al dominio de la PC servidor y nombre de usuario al nombre de la PC cliente, de ser así, no requiero especificar password?

Y finalmente, desde mi aplicación de escritorio desarrollada en C# con VS2008, al llamar el reporte en el ReportViewer debo especificar:

   a) Reporte remoto.

   b) Url del reporte.

   c) Patch.

   d) Y finalmente y mi otra gran duda, la seguridad mediante credenciales? networdcredentials?

Espero me apoyes un poco con esto, y gracias por tu tiempo, saludos.

# April 18, 2010 10:41 AM

Yahima Duarte ha opinado:

Hola, le escribo  pues llevo dias intentando resolver mi problema con la asignacion de credenciales a los servicios web de Reporting Services pero no logro solucion alguna. Estoy intentando exportar reportes desde un codigo de c# q descargue desde este mismo sitio pero para empezar esta linea System.Net.CredentialCache.DefaultCredentials siempre esta vacia. Intente asignarle directamente la cuenta con NetworkCredential pero nada. Ya no se exactamente q cuenta debo asignarle o q debo configurar para q esto me funcione pues siempre me da el mensaje de error HTTP 401 Unauthorized. Necesito me ayude con urgencia estoy deseperada. Este es mi correo layahi@gmail.com. Gracias.

# May 26, 2010 9:40 PM

Yahima Duarte ha opinado:

Trabajando en esto de las credenciales me surge ahora un problema. Estoy intentando exportar los reportes desde c# usando las clases de ReportExecution2005.asmx. Le asigno las credenciales al reportviewer con la clase NetworkCredential, le asigno ademas las credentiales del datasource obtenidas desde  viewer.ServerReport.GetDataSources(); y luego viewer.ServerReport.SetDataSourceCredentials(permisos); despues de haber llenado el objeto permisos. Le asigno las NetworkCredential al servicio ReportExecution y asi y todo me da el siguiente error cuando intento renderear el reporte:

System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException: No se han especificado una o varias credenciales de origen de datos necesarias para ejecutar el informe en Microsoft.ReportingServices.WebServer.ReportExecution2005Impl.InternalRender(String Format, String DeviceInfo, PageCountMode pageCountMode, Stream& Result, String& Extension, String& MimeType, String& Encoding, Warning[]& Warnings, String[]& StreamIds)

# May 26, 2010 10:32 PM