Asp.net

如何使用 Windows Integrated Security 在 ASP.Net MVC 4 上保護 Elmah:Elmah 忽略我的設置

  • December 22, 2016

我已將 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 支持以下項目&lt;appSettings&gt;

&lt;appSettings&gt;
   &lt;!-- ELMAH configuration. Admin page only available for logged in users in 
        the Admin role. --&gt;
   &lt;add key="elmah.mvc.disableHandler" value="false" /&gt;
   &lt;add key="elmah.mvc.disableHandleErrorFilter" value="false" /&gt;
   &lt;add key="elmah.mvc.requiresAuthentication" value="true" /&gt;
   &lt;add key="elmah.mvc.allowedRoles" value="Admin" /&gt;
   &lt;add key="elmah.mvc.route" value="elmah" /&gt;
&lt;/appSettings&gt;

感興趣的鍵是elmah.mvc.requiresAuthentication打開需要登錄的使用者的開關。以及elmah.mvc.allowedRoles指定使用者必須處於哪個角色。

您可以從 nuget 安裝 Elmah.Mvc。

引用自:https://stackoverflow.com/questions/13703763