Asp.net
如何使用 Windows Integrated Security 在 ASP.Net MVC 4 上保護 Elmah:Elmah 忽略我的設置
我已將 elmah 添加到 asp.net mvc 4 應用程序中。日誌記錄正在工作,現在我正在嘗試配置安全性,但 elmah 沒有獲取設置,並且所有使用者都可以看到日誌。
這是一個 Intranet 應用程序,因此我們正在使用 Windows 集成安全。我正在嘗試限制訪問,以便只有 domain\log_readers 廣告組的成員才能閱讀日誌。
我在這裡閱讀了設置指南:http ://code.google.com/p/elmah/wiki/SecuringErrorLogPages我還閱讀了一些關於 SO 和其他表單的文章,這些文章讓我添加了 roleManager 和 WindowsRoleProvider 配置,一切都無濟於事。
這是我的 web.config 的 elmah 部分:
<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>我還嘗試通過將我的自動化配置設置為拒絕所有人來完全鎖定
<authorization> <deny users="*" /> </authorization>並且
<authorization> <deny users="?" /> </authorization>日誌仍然對所有人開放。
我懷疑問題可能出在位置上。我沒有更改 elmah 的位置。它是從預設位置(<http://server/myapp/elmah>)訪問的
如果您使用 Elmah.Mvc,它們具有非常精細的安全設置。例如,您可以輕鬆地將 elmah 頁面保護為僅對 Admin 組中的登錄使用者可用。
Elmah.Mvc 支持以下項目
<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>感興趣的鍵是
elmah.mvc.requiresAuthentication打開需要登錄的使用者的開關。以及elmah.mvc.allowedRoles指定使用者必須處於哪個角色。您可以從 nuget 安裝 Elmah.Mvc。