Pregunta

Estamos teniendo dificultades para averiguar cómo estas credenciales objetos de trabajo. De hecho, puede que no funcionen como esperábamos que trabajen. He aquí una explicación de la edición actual.

Nos dieron 2 servidores que necesita hablar entre sí a través de servicios web. La primera de ellas (lo llamaremos Server01) tiene un servicio de Windows se ejecuta como la cuenta NetworkService. El otro Server02 tiene ReportingServices funcionando con IIS 6.0. El servicio de Windows en DOMAIN\MachineName$ está tratando de utilizar el servicio Web <=> ReportingServices para generar informes y enviarlos por correo electrónico.

Por lo tanto, esto es lo que hemos intentado hasta ahora.

Configuración de las credenciales en tiempo de ejecución ( Esto funciona perfectamente bien ):

 rs.Credentials = new NetworkCredentials("user", "pass", "domain");

Ahora, si podríamos utilizar un usuario genérico todo estaría bien, sin embargo ... no se nos permite hacerlo. Por lo tanto, estamos tratando de utilizar los DefaultCredetials o DefaultNetworkCredentials y pasarlo al servicio web de RS:

rs.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials

O:

rs.Credentials = System.Net.CredentialCache.DefaultCredentials

De cualquier manera no funcionará. Siempre estamos consiguiendo 401 Unauthrorized desde IIS. Ahora, lo que sabemos es que si queremos dar acceso a un recurso conectado como NetworkService, hay que concederle a <=> ( http://msdn.microsoft.com/en-us/library/ms998320.aspx ):

  

Conceder acceso a un servidor remoto SQL

     

Si tiene acceso a una base de datos en otro servidor en el mismo dominio (o en un dominio de confianza), las credenciales de red de la cuenta de servicio de red se utilizan para autenticar a la base de datos. credenciales de la cuenta de servicio de red son de la forma de dominio \ AspNetServer $, donde nombreDeDominio es el dominio del servidor ASP.NET y AspNetServer es el nombre del servidor Web.

     

Por ejemplo, si la aplicación ASP.NET se ejecuta en un servidor llamado SVR1 en el dominio Contoso, el servidor SQL Server ve una petición de acceso a la base de datos de Contoso \ SVR1 $.

Hemos asumido que el acceso de la misma manera con IIS funcionaría. Sin embargo, no lo hace. O por lo menos, algo no está bien ajustado para que se autentique correctamente.

Por lo tanto, aquí hay algunas preguntas:

  1. Hemos leído acerca de "hacerse pasar por usuarios" en algún lugar, hacen que necesitamos para establecer esto en alguna parte en el servicio de Windows

  2. ¿Es posible conceder acceso a la NetworkService cuenta integrada a un servidor IIS remoto?

Gracias por leer!

¿Fue útil?

Solución

Todos los detalles que necesita están incluidos en esta muy viejo artículo,

http://msdn.microsoft.com/en-us/library /ms998351.aspx

En resumen, cuando le resulta confuso para solucionar problemas como éste, debe revisar primero los detalles técnicos detrás de suplantación de ASP.NET con cuidado.

Otros consejos

Aquí hay algunas cosas que se puede consultar: - establecer una (nombre principal de servicio) SPN para el servicio de informes; se pueden encontrar buenos ejemplos en Google; - Permitir delegación (ClientCredentials.Windows.AllowImpersonationLevel)

¿El problema es que está fallando para autenticar a IIS, o en su defecto para autenticar a SSRS? Puede ser necesario el permiso otorgado en SSRS la cuenta de dominio \ MachineName $ para ejecutar el informe que estamos tratando de automatizar.

SSRS por lo general hace un muy buen trabajo de conseguir IIS configurados correctamente, por lo que no deberían tener que meterse con esos ajustes. Verifiqué mi instalación (que es SSRS 2005, las cosas pueden haber trabajado de manera diferente en SSRS 2000 y que no has dicho qué versión se está ejecutando), y está configurado para utilizar la autenticación de Windows y ha permitido la suplantación. Eso significa que IIS debe, básicamente, sólo se autentica las credenciales de validación (un nombre de usuario / contraseña correcta), no se autoriza (determinar si ese usuario tiene permiso para ejecutar el informe en cuestión). A continuación, IIS pasa las credenciales a SSRS, que tiene su propia configuración para determinar qué cuentas tienen permiso para ver los informes.

Además, puede automatizar el envío de informes sobre una base programada directamente en SSRS, por lo que puede que no necesite el servicio de Windows en absoluto si su programación es bastante básico (es decir, diaria, semanal, etc.).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top