Tengo una aplicación web implementada en Server 2008 IIS 7.5 box.
A distancia se da este error: 401 - Unauthorized: Access is denied due to invalid credentials
. (remoto = escritorios en la misma LAN)
He probado varios clientes remotos utilizando diferentes navegadores, todos con el mismo resultado. (IE, FF y Chrome)
Golpear la aplicación desde el escritorio del servidor funciona perfectamente . Sin embargo, no he probado Firebug en el escritorio del servidor. Asumiría que todavía está emitiendo un código de estado 401 pero que aún devuelve el contenido. Ver Actualización # 2.
La aplicación está utilizando autenticación anónima.
La aplicación está escrita en .NET 4.0 Asp.Net usando el marco MVC.
El contenido estático funciona bien, ejemplo: http://server.com/content/image.jpg
Sysinternals procmon
devuelve estos 2 resultados para cada solicitud: FAST IO DISALLOWED y PATH NOT FOUND.
Tengo otras 2 aplicaciones MVC funcionando bien en el mismo servidor. He comprobado la seguridad de las carpetas y todas coinciden.
La aplicación funciona bien en un cuadro Server 2008 IIS 7.0.
No aparece nada en el registro de eventos en el servidor relacionado con esto.
Tirando de mi cabello aquí, ¿algún consejo para solucionar problemas?
ACTUALIZACIÓN # 1 : Esto solo obtiene más WTF mientras cavo.
Si hago clic en la aplicación en el Administrador de IIS -> Seleccionar páginas de error -> Editar configuración de Detailed Errors
funciones, la aplicación funciona de forma remota. No dejar esto encendido, por lo que el problema aún no está resuelto, es más confuso.
ACTUALIZACIÓN # 2 : Usando Firebug, veo que el Estado todavía está 401 Unauthorized
, pero la Respuesta está devolviendo el HTML correcto de la aplicación.
ACTUALIZACIÓN # 3 Jugando con un seguimiento de solicitud fallido, aquí está el seguimiento de solicitud de ADVERTENCIA que está causando el 401:
ModuleName ManagedPipelineHandler
Notification 128
HttpStatus 401
HttpReason Unauthorized
HttpSubStatus 0
ErrorCode 0
ConfigExceptionInfo
Notification EXECUTE_REQUEST_HANDLER
ErrorCode The operation completed successfully. (0x0)
La actualización n. ° 4 del registro IIS normal muestra esto:
#Software: Microsoft Internet Information Services 7.5
#Version: 1.0
#Date: 2010-07-20 19:17:22
#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status time-taken
2010-07-20 19:17:22 10.10.1.10 GET /Purchasing/Home - 80 - 10.10.1.12 Mozilla/5.0+(Windows;+U;+Windows+NT+6.1;+en-US;+rv:1.9.2.6)+Gecko/20100625+Firefox/3.6.6 401 0 0 4414
fuente
Html.RenderAction
, luego me di cuenta de que Razor usaba,Html.Action
así que mis búsquedas iniciales quedaron vacías.Respuestas:
A veces tienes que dar un paso atrás ... La causa de esto fue que,
Html.RenderAction()
en mi opinión, llamaba a un método de acción marcado con el[Authorize]
atributo.fuente
Como funciona localmente pero no remotamente, me parece que la cuenta de usuario anónimo no tiene acceso a algo, pero su usuario de Windows sí. Para probar esto, apague la autenticación de Windows para el sitio web y vea si se rompe localmente.
Lo que se está rompiendo probablemente se ejecute como la identidad de su sitio web en lugar de la identidad de su grupo de aplicaciones, de lo contrario, se rompería local y remotamente. Mi recomendación si tiene asignaciones 1 a 1 de sitios a grupos de aplicaciones, o si tiene un entorno altamente confiable, es configurar la cuenta de usuario anónimo para usar la identidad del grupo de aplicaciones. Entonces no necesita preocuparse por un segundo usuario para mantener.
Usted mencionó el explorador de procesos. Eso es bueno para encontrar información en ejecución, pero la herramienta que probablemente descubrirá errores de acceso denegado es processmon (también de sysinternals). Pruébalo, repro y captura, luego busca la palabra 'negado'. Debería activar los problemas de acceso denegado en el disco.
fuente
Tendrá este mismo comportamiento cuando tenga un filtro para autorizaciones personalizadas que herede
AuthorizeAttribute
y una o más llamadas alOnAuthorization
método, con una de ellas configuradaAuthorizationContext.Result
como 'HttpUnauthorizedResult'fuente
Por alguna razón, esto solucionó mi problema.
fuente
¿Verificó la configuración en Reglas de autorización? Si alguien puede acceder a esta página (que parece ser su objetivo), asegúrese de tener una regla de "Permitir" que tenga "Todos los usuarios" debajo de la columna de usuarios.
Luego, en "Autenticación", asegúrese de que no haya conflictos y que solo la Autenticación anónima esté habilitada.
Espero que ayude.
fuente