¿Cómo puedo asegurar Elmah en ASP.Net MVC 4 con la seguridad integrada de Windows? Elmah ignora mi configuración
elmah sql server (2)
La respuesta anterior funcionó muy bien, una vez que descubrí cómo determinar el rol al usar la autenticación de Windows:
Abra una ventana de comando e ingrese el siguiente comando:
cmd /k net user <user> /Domain
Para <user>
, sustituya su nombre de usuario. El comando listará los grupos a los que perteneces.
Las instrucciones provienen de "Cómo crear un sitio de intranet usando MVC de ASP.NET" en http://msdn.microsoft.com/en-us/library/gg703322(VS.98).aspx
He añadido elmah a una aplicación asp.net mvc 4. El registro está funcionando y ahora estoy tratando de configurar la seguridad, pero elmah no está recogiendo la configuración y los registros permanecen visibles para todos los usuarios.
Esta es una aplicación de intranet y, como tal, estamos usando Windows Integrated Secuirty. Intento restringir el acceso para que solo los miembros del grupo de anuncios domain / log_readers puedan leer los registros.
He leído la guía de configuración aquí: http://code.google.com/p/elmah/wiki/SecuringErrorLogPages y también he leído varias publicaciones en SO y otros formatos que me han llevado a agregar la configuración roleManager y WindowsRoleProvider , todo fue en vano.
Aquí están las partes principales de mi web.config:
<elmah>
<!--
See http://code.google.com/p/elmah/wiki/SecuringErrorLogPages for
more information on remote access and securing ELMAH.
-->
<security allowRemoteAccess="true" />
<errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/Logs" />
</elmah>
<location path="elmah.axd" inheritInChildApplications="false">
<system.web>
<authentication mode="Windows" />
<roleManager defaultProvider="WindowsProvider"
enabled="true" cacheRolesInCookie="false">
<providers>
<add
name="WindowsProvider"
type="System.Web.Security.WindowsTokenRoleProvider" />
</providers>
</roleManager>
<httpHandlers>
<add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
</httpHandlers>
<!--
See http://code.google.com/p/elmah/wiki/SecuringErrorLogPages for
more information on using ASP.NET authorization securing ELMAH.
-->
<authorization>
<allow roles="domain/log_readers"/>
<deny users="*" />
</authorization>
</system.web>
<system.webServer>
<handlers>
<add name="ELMAH" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" preCondition="integratedMode" />
</handlers>
</system.webServer>
</location>
También he intentado un bloqueo completo configurando mi configuración de autorización para negar a todos
<authorization>
<deny users="*" />
</authorization>
y también
<authorization>
<deny users="?" />
</authorization>
Los registros permanecen abiertos a todos.
Sospecho que el problema puede estar en la ubicación. No he hecho cambios en la ubicación de elmah. Se accede desde la ubicación predeterminada ( http://server/myapp/elmah )
Si utilizas Elmah.Mvc, tienen una configuración de seguridad bastante precisa. Puede asegurar fácilmente que la página elmah solo esté disponible para usuarios registrados en el grupo de administradores, por ejemplo.
Elmah.Mvc admite los siguientes elementos en <appSettings>
<appSettings>
<!-- ELMAH configuration. Admin page only available for logged in users in
the Admin role. -->
<add key="elmah.mvc.disableHandler" value="false" />
<add key="elmah.mvc.disableHandleErrorFilter" value="false" />
<add key="elmah.mvc.requiresAuthentication" value="true" />
<add key="elmah.mvc.allowedRoles" value="Admin" />
<add key="elmah.mvc.route" value="elmah" />
</appSettings>
Las claves de interés son elmah.mvc.requiresAuthentication
que enciende al usuario que necesita iniciar sesión. Y elmah.mvc.allowedRoles
que especifica en qué rol debe estar el usuario.
Puedes instalar Elmah.Mvc desde nuget.