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?