2010-11-01 19 views
7

Recientemente hemos lanzado la última versión de nuestra aplicación de intranet, que ahora usa la autenticación de Windows como estándar, y necesita poder conectarse a un servidor SQL configurado con las credenciales de dominio del usuario final.¿Cómo configuro IIS para que se utilicen las credenciales de dominio del usuario cuando se conecta al servidor SQL?

Últimamente hemos encontrado que en un par de implementaciones de clientes, aunque IIS puede ver las credenciales de dominio del usuario, no las pasará al servidor SQL. En cambio, parece usar la cuenta anónima. Esto es a pesar de seguir todos los pasos correctos (cambiar la seguridad del directorio a Win Auth, actualizar Web.Config para usar Win Auth y denegar usuarios anónimos).

He estado leyendo mucho y sugiero que debemos asegurarnos de que Kerberos esté en su lugar, pero no estoy seguro (a) de cuán válido es esto (es decir, ¿es realmente un requisito?) O (b) cómo investigar si está configurado o cómo configurarlo.

Estamos en una situación en la que tenemos que poder configurar IIS o la aplicación para que funcione para el cliente o explicarle al cliente exactamente lo que deben hacer para que funcione.

Hemos logrado reproducir esto en nuestra red interna con un servidor SQL de prueba y una caja IIS de desarrollador, así que vamos a perder el tiempo con esta configuración y veremos si podemos encontrar una solución, pero si alguien tiene ideas brillantes, ¡me encantaría escucharlas!

Me gustaría especialmente escuchar las opiniones o consejos de las personas en términos de Kerberos. ¿Es este un requisito, y si lo es, cómo hago un bosquejo para los clientes sobre cómo debería configurarse?

Ah, y también he visto a un par de personas mencionar la 'regla clásica de un salto' para dominios y pasar las credenciales de Windows, pero no sé cuánto peso realmente tiene.

Gracias!

Matt

Respuesta

4

Esto se llama el Double-Hop Problem y prohíbe la expedición de las credenciales de los usuarios a terceros. Esto ocurre cuando navegan desde una máquina, contra un sitio en otra (primer salto) y reenvían las credenciales a una tercera máquina (segundo salto).

El problema no aparecerá si aloja IIS y SQL Server en la misma máquina.

Hay muchos más detalles técnicos publicados al respecto en How to use the System.DirectoryServices namespace in ASP.NET, lo que explica el problema del doble salto y los tokens primarios y secundarios.

+0

Gracias por ese enlace. ¡Parece una buena lectura! Lo atravesaré mañana. –

+0

Excelentes artículos ... ¡gracias! Parece que estamos ante tres posibles soluciones: decirle al cliente que implemente Kerberos, ejecutar la aplicación web usando una cuenta de dominio fijo para conectarse a SQL Server o alojar la aplicación web con SQL Server. –

+0

Para cualquier persona interesada, era el problema del "doble salto", y nuestra solución final era el complemento MMC Usuarios y equipos de Active Directory. Examinamos las propiedades de la cuenta de la computadora (para el servidor IIS) y en la pestaña "Delegación" permitimos la delegación a servicios específicos. Agregamos el servidor SQL que aloja las bases de datos de la aplicación a la lista de máquinas que aceptan delegación, y especificamos el Servicio MSSQLSvc. Esto garantiza que el servidor IIS solo es confiable para pasar credenciales para SQL Server, y no para otros servicios. –

1

Para ejecutar su aplicación con las credenciales de Active Directory o Windows del usuario, asegúrese que éstos:

  • la aplicación de IIS está configurado para no permitir el acceso anónimo
  • la aplicación IIS utiliza Windows integrada autenticación
  • su cadena de conexión debe tener Integrated Security=SSPI para garantizar que las credenciales de Windows/AD del usuario se pasan a SQL Server.

    decir Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;

+0

El segundo y tercer punto que ya tengo. También intenté deshabilitar el acceso anónimo el día de hoy y esto no ayudó. Curiosamente, tenemos esto funcionando bien en entornos de clientes similares donde tenemos acceso anónimo habilitado (así como también win auth). ¡Pero gracias por los comentarios! –

+0

@Code: ¿no funciona? ¿Qué síntomas tienes entonces? –

+0

Se conecta al servidor SQL como Windows NT \ Inicio de sesión anónimo –

0

Usted afirma que no está seguro de "cómo investigar si está configurado o cómo configurarlo".

Para esto recomiendo encarecidamente una herramienta llamada DelegConfig. Es una aplicación muy práctica que puede decirle si kerberos está configurado correctamente.

Descomprímalo en un directorio, configure un directorio virtual en IIS para que apunte a él. Vaya a la página principal y dígale a qué servidor de respaldo le gustaría permitir el acceso (por ejemplo, UNC, SQL, HTTP, etc.) y le dirá su configuración correctamente o no, y explique por qué.

Incluso tiene el abilty a los recongiure Kerberos para solucionar el problema si así lo desea (aunque no he utilizado este - Prefiero reconfiguire yo mismo para entender lo que he hecho en el futuro)

Me doy cuenta de que esto llega demasiado tarde para su problema en particular, pero pensé que valía la pena compartirlo con los demás, especialmente la capacidad de las herramientas para explicar por qué la delegación funciona o no. Lo he encontrado invaluble.

+0

Eso es brillante, ¡gracias! De hecho, ahora somos mucho más conscientes del problema y ahora tenemos documentos detallados sobre cómo los clientes deben configurar su configuración de directorio activo. ¡Pero esto podría ser muy útil para los clientes que no son lo suficientemente inteligentes como para saber cómo está configurada su red! Ciertamente ayudará cuando se solucionen problemas, así que gracias por eso. ¡Iré a jugar! –

Cuestiones relacionadas