20 votos

Solución de problemas de Autenticación de Windows problemas (no hay reto) en IIS 7.5?

Sé que hay miles de denuncias de personas que tienen problemas para conseguir la Autenticación Integrada de Windows para trabajar con IIS, pero todos ellos parecen conducir a páginas web que no se aplican o soluciones que ya he probado. He desplegado decenas de sitios como este antes, por lo que sea hay algo extraño pasa con el servidor/configuración, o he estado mirando esta demasiado largo y no ver lo obvio.

Simplemente, todo funciona a la perfección en mi máquina local, pero se cae a pedazos en el servidor de producción, que en la medida que puedo decir que tiene exactamente la misma configuración.

En el equipo local:

  • El funcionamiento de la máquina de Windows 7 Ultimate Service Pack 1, IIS 7.5.
  • El sitio ha sido probado con éxito, el uso de IIS y la Web de VS Servidor de Desarrollo.
  • El sitio de IIS config tiene todos los métodos de autenticación movilidad excepto la Autenticación de Windows.
  • El equipo local no está en ningún dominio.
  • Los Proveedores son de Negociar y NTLM (no Negociar:Kerberos).
  • Protección extendida está Apagado.
  • Todos los navegadores probados (IE, Firefox, Chrome) muestran el reto del sistema y me permite iniciar sesión en el localhost de dominio con mi (local) de la cuenta de Windows.
  • Todos los navegadores probados también trabajar con una opaca dirección IP local - para los navegadores de los mismos no parecen preocuparse de si el sitio aparece "local" o "remoto".
  • He añadido una línea de la pantalla a la página web que muestra el que haya iniciado la sesión de usuario y muestra exactamente lo que yo esperaría (cualquiera de usuario local en que se registra con).

En el equipo remoto:

  • El servidor se está ejecutando Windows Server 2008 R2, IIS 7.5.
  • La carga de la página web de los resultados en una inmediata 401.2 de error: Usted no está autorizado a ver esta página no válida encabezados de autenticación. Ningún desafío símbolo aparece nunca.
  • El sitio de IIS config tiene todos los métodos de autenticación movilidad excepto la Autenticación de Windows.
  • El equipo remoto no está en ninguna de dominio.
  • Los Proveedores son de Negociar y NTLM (no Negociar:Kerberos).
  • Protección extendida está Apagado.
  • En la máquina remota (sesión de escritorio remoto), el mismo error que aparece en Internet Explorer, independientemente de si el dominio es localhost o la dirección IP externa.
  • Si trato de ver el remoto sitio web de mi local de la máquina, el error es todavía 401, pero un poco diferente 401. No subcódigo, con el texto: Acceso denegado debido a credenciales no válidas.
  • La Autenticación de Windows IIS función característica está instalado.
  • El WindowsAuthentication Módulo es añadido (en el nivel de Servidor).
  • El mismo error se produce si puedo desactivar la Autenticación de Windows y habilitar la Autenticación Básica.
  • El sitio no carga si puedo desactivar la Autenticación de Windows y habilitar Anónimo (obviamente).
  • Ya he seguido todos los pasos de solución de problemas de Soporte técnico de Microsoft: Solución de problemas de errores de HTTP 401 en IIS
  • Yo ya he probado la solución que se muestra en otra página soporte de Microsoft (supuestamente a la fuerza NTLM como el único método).

Por último, pero no menos importante, he intentado encender FREB para 401.2 errores y los resultados no parecen decirme nada útil, todo lo que veo es la siguiente advertencia:

MODULE_SET_RESPONSE_ERROR_STATUS

ModuleName IIS Web principal
Notificación de 2
HttpStatus 401
HttpReason No Autorizado
HttpSubStatus 2
ErrorCode 2147942405
ConfigExceptionInfo
Notificación AUTHENTICATE_REQUEST
Código de error de Acceso denegado. (0 x 80070005)

...este parece ser simplemente decirme lo que ya sé (que es simplemente rechazar la petición en lugar de negociar las credenciales).

El rastro hace indicar que el WindowsAuthentication módulo está cargado correctamente porque hay un NOTIFY_MODULE_START línea con ModuleName = WindowsAuthentication (y varios otros ASP.NET seguimiento de eventos - [onu]afortunadamente, no muy interesante, errores o advertencias aquí).

¿Alguien puede decirme qué podría faltar aquí?


Actualización Rápida:

Estoy un poco incómodo el envío de un conjunto de Wireshark volcado como podría revelar IPs, direcciones Url y otras cosas, pero me hice a un lado-por-lado la comparación de las respuestas HTTP desde localhost y el servidor remoto en el Fiddler, y parece bastante evidente cuál es el problema:

Localhost:

HTTP/1.1 401 no autorizado
Cache-Control: private
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/7.5
WWW-Authenticate: a Negociar
WWW-Authenticate: NTLM
X-Powered-By: ASP.NET
Fecha: Sat, 17 Dec 2011 23:42:34 GMT
Content-Length: 6399
Proxy-Apoyo: Las De Sesión De Autenticación De

Remoto:

HTTP/1.1 401 no autorizado
Content-Type: text/html
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Fecha: Sat, 17 Dec 2011 23:43:13 GMT
Content-Length: 1293

Aparte de unos pocos, aparentemente intrascendente diferencias como cache-control, la principal diferencia es que el servidor remoto no está enviando el WWW-Authenticate encabezados de vuelta al cliente.

Por lo tanto, supongo que se estrecha la pregunta: ¿por Qué es IIS no enviar encabezados WWW-Authenticate cuando la Autenticación de Windows parece ser instalado, carga y exclusivamente habilitado?

13voto

Aaronaught Puntos 302

Problema resuelto. Finalmente me decidí a comparar el módulo de la lista de al lado y allí, en realidad, era una falta. Resulta que hay dos Ventanas de módulos de Autenticación:

Module List

En el servidor, el administrado WindowsAuthentication módulo estaba allí, pero no la nativa WindowsAuthenticationModule anteriormente señalados. Por qué fue configurado de esa manera, es una incógnita, pero al parecer, si el nativo no está cargado, el administrado módulo alegremente de carga y en silencio fallar.

Así que para cualquier futuro lectores que se encuentran con este problema, asegúrese de que tiene tanto de los módulos cargados, debido a que IIS no advertir que si falta uno de ellos.

4voto

jm3 Puntos 260

Hemos encontrado que esto no necesariamente soluciona el problema para los desarrolladores que trabajan de forma local en ASP.NET los sitios que se ejecuta en la Autenticación de Windows. Hemos encontrado un registro hack que deshabilita la comprobación de bucle invertido; esta arreglado: -

registro de la clave HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa

Crear un valor DWORD con el valor 1 se llama "DisableLoopbackCheck"

Usted tendrá que reiniciar el equipo para que la configuración surta efecto

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: