16

asp.net mvc 4 アプリケーションに elmah を追加しました。ログは機能しており、セキュリティを構成しようとしていますが、elmah が設定を取得しておらず、ログはすべてのユーザーに表示されたままです。

これはイントラネット アプリであるため、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>

ログは誰にでも公開されたままです。

問題は場所にあるのではないかと思います。エルマの場所に変更を加えていません。デフォルトの場所からアクセスされます ( http://server/myapp/elmah )

4

2 に答える 2

29

Elmah.Mvc を使用する場合、非常にきめ細かいセキュリティ設定があります。たとえば、管理者グループにログインしているユーザーのみが利用できるように、elmah ページを簡単に保護できます。

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、ユーザーが必要なロールを指定するキーです。

Elmah.Mvc は nuget からインストールできます。

于 2012-12-06T14:17:15.730 に答える
3

Windows認証を使用するときに役割を決定する方法を見つけたら、上記の答えはうまくいきました:

コマンド ウィンドウを開き、次のコマンドを入力します。

cmd /k net user <user> /Domain

をユーザー名に<user>置き換えます。このコマンドは、あなたが属しているグループを一覧表示します。

手順は、 http: //msdn.microsoft.com/en-us/library/gg703322(VS.98).aspx の「ASP.NET MVC を使用してイントラネット サイトを作成する方法」からのものです。

于 2013-08-02T16:12:20.367 に答える