2012-12-04 9 views
16

Bir asp.net mvc 4 uygulamasına elmah ekledim. Günlüğe kaydetme çalışıyor ve şimdi güvenliği yapılandırmaya çalışıyorum ancak elmah ayarları kaldırmıyor ve günlükler tüm kullanıcılar tarafından görülebiliyor.Windows Integrated Security ile ASP.Net MVC 4'te Elmah'ı nasıl güvenli hale getirebilirim: Elmah ayarlarımı yok sayar

Bu bir intranet uygulamasıdır ve windows entegre secuirty kullanıyoruz. Erişimi kısıtlamaya çalışıyorum, böylece yalnızca etki alanı \ log_readers reklam grubunun üyeleri günlükleri okuyabilir.

Kurulum kılavuzunu burada okudum: http://code.google.com/p/elmah/wiki/SecuringErrorLogPages ve ayrıca SO ve diğer formumlarda, roleManager ve WindowsRoleProvider yapılandırmasını eklememize neden olan pek çok ileti okudum. Ben de herkes de

<authorization> 
<deny users="*" /> 
</authorization> 

ve

inkar benim autorisation yapılandırma ayarlayarak tam bir kilit aşağı denedi

<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> 

: Burada

benim web.config ELMAH parçalarıdır

<authorization> 
<deny users="?" /> 
</authorization> 

Günlükler herkes tarafından açık kalır.

Sorunun konumla ilgili olabileceğinden şüpheleniyorum. Elmah konumunda değişiklik yapmadım. Varsayılan konumdan erişilir (http://server/myapp/elmah)

cevap

28

Elmah.Mvc kullanırsanız, oldukça ince taneli güvenlik ayarları vardır. Elmah sayfasını, yalnızca Yönetici grubundaki kullanıcılar için oturum açabilecekleri şekilde kolayca güvenceye alabilirsiniz.

Elmah.Mvc kaydedilebilir gerek kullanıcı anahtarları elmah.mvc.requiresAuthentication olan ilgi <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> 

anahtarlarında aşağıdaki öğeleri destekler. Ve kullanıcı olmalıdır hangi rolü belirten elmah.mvc.allowedRoles.

Elmah.Mvc'yi nuget'ten yükleyebilirsiniz.

açın bir komut penceresi ve aşağıdaki komutu girin: Windows kimlik doğrulaması kullanılırken Rolü nasıl belirleneceği öğrendim kez

+0

de "Nasıl ASP.NET MVC kullanarak bir intranet Sitesi Oluşturma" Ben bir denemede da vereceğiz. Bu ayarlara ek olarak veya daha önce kurduğumlar yerine – Twisted

+1

Nihale Elmah.Mvc'i yüklediyseniz, yukarıdaki web.config dosyasına otomatik olarak eklemiş olmanız gerekir. Yukarıdaki ayarlar, önceden yapılandırmış olduğunuzların yerine. –

+0

Bir işlem yaptı, teşekkürler – Twisted

İlgili konular