Password protect Elmah while web application Anonymously accessible - asp.net

I am using Elmah (Error Logging Modules And Handlers) with Asp.net web forms application.
I have enabled Elmah for remote access.
Is it possible for Elmah to password protect like windows authentication, keeping web forms application anonymously accessible?

Following solution is working for window "Roles". But direct access to users isn't working.
<location path="admin" >
<system.web>
<httpHandlers>
<add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
</httpHandlers>
<authorization>
<allow roles="WindowsGroupName" />
<deny users="*" />
</authorization>
</system.web>
</location>
Note: Elmah is also secured by serving through root/admin/elmah.axd as instructed by Phil Haack.

You can secure Elmah by adding the allowed users in your web.config:
<location path="elmah.axd" inheritInChildApplications="false">
<system.web>
<authorization>
<allow users="YOUR-WINDOWS-USERNAME" />
<deny users="*" />
</authorization>
</system.web>
...other config settings
</location>
Assuming you are using Windows authentication
<authentication mode="Windows">

Related

IIS web.config Active Directory Windows Authentication using roles works for AD user but not AD group or Local Group

I am trying to ultimately get Windows Auth to work in my web.config using local groups on the windows web server. Here is my issue...
I have the following test virtual env. setup
Windows 2019 AD DNS DC
Windows 2012 R2 Webserver, named testweb
domain is "test.local" netbios name of "test"
domain user is "test\testuser1"
domain group that testuser1 belongs to is "testgroup1", security group not a distb group btw
local group on testweb called "localgroup1" that "test\testuser1" belongs to.. "test\testuser1" is also part of the local administrators group on testweb
Here is my web.config
<system.web>
<compilation debug="true" targetFramework="4.7.2"/>
<httpRuntime targetFramework="4.7.2"/>
<pages>
<namespaces>
<add namespace="System.Web.Optimization"/>
</namespaces>
<controls>
<add assembly="Microsoft.AspNet.Web.Optimization.WebForms" namespace="Microsoft.AspNet.Web.Optimization.WebForms" tagPrefix="webopt"/>
</controls>
</pages>
<authentication mode="Windows" />
<authorization>
<allow roles="test\testuser1"/>
<deny users="*" />
</authorization>
</system.web>
this works perfectly and i can auth to my default.asxp page. if i change it to
<authorization>
<allow roles="test\testuser2"/>
<deny users="*" />
</authorization>
</system.web>
then of course i get denied access as i expect because I am not logged in as testuser2
I then change it to the following..
<authorization>
<allow roles="test\testgroup1"/>
<deny users="*" />
</authorization>
</system.web>
but get access denied even though "test\testuser1" belongs to the security group testgroup1.. i would expect since i'm logged in with testuser1 it should work.
then i say let me try a local group on testweb server. which again IS my ultimate goal is to use a local group
<authorization>
<allow roles=".\localgroup1"/>
<deny users="*" />
</authorization>
</system.web>
when i do this, it works!! BUT, here is the BUT it works LOL whether or not "test\testuser1" is a member of the local group "localgroup1" or NOT!!! which is strange..
so i can't seem to 1st get AD groups even working and 2nd my local groups just let me through no matter if my test\testuser1 account is in the local group or not :(
so at this point i'm totally confused and frustrated on what is not going right with getting roles working with either AD Groups or Local Groups, again my goal is to have it work with Local Groups
Make sure you create a new Group in Locals User Group in Computer Management and add the AD group there. and then add the local group in iis authorization rule. also, check that in iis site windows authentication is enabled and the rest of the are disabled.
add code in your web.config as shown below:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<security>
<authentication>
<anonymousAuthentication enabled="false" />
<windowsAuthentication enabled="true" />
</authentication>
<authorization>
<remove users="*" roles="" verbs="" />
<add accessType="Allow" roles="MyDomain\SomeADGroup" />
<add accessType="Deny" users="*" />
</authorization>
</security>
</system.webServer>
<system.web>
<authentication mode="Windows" />
</system.web>
</configuration>
IIS: Setting it in ".NET Authorization rules" and restarting app pool results in Web.config having this key and it works (given that group has permissions in application folder):
<allow roles="localgroupname"/>

How to prevent users from accessing files in folder?

I'm using Asp.Net Identity. I need to allow admins and deny users to access all pages in my management folder, so I've put a web.config file in that folder.
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<allow roles="Admin"/>
<deny users="*" />
</authorization>
</system.web>
</configuration>
But anybody can still access all files in folder. I've also tried to put it into main config file with location tag,but no results. Have you any ideas where to start looking for a problem?
Update: I've found a question on asp.net forum which explains a lot:
http://forums.asp.net/t/1955560.aspx?ASP+NET+Identity+Are+web+config+files+no+longer+acting+in+the+capacity+of+a+security+guard+for+our+ASP+NET+applications+files+and+folders+
There also one thing to mention. When creating new web application project with asp.net Identity. Visual Studio 2013 sets these parameters:
<system.web>
<authentication mode="None"/>
</system.web>
and
<system.webServer>
<modules>
<remove name="FormsAuthenticationModule" />
</modules>
<system.webServer>
change your code to ** ** it prevent any user that aren't authenticated:
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<allow roles="Admin"/>
<deny users="?" />
</authorization>
</system.web>
</configuration>
try this
<configuration>
<system.web>
<authentication mode="Forms"/>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
<location path="[mymanagementfolder]">
<system.web>
<authorization>
<deny users ="?" />
<allow users ="*" />
</authorization>
</system.web>
</location>
</configuration>
MSDN SOURCE
If Directory Browsing Is enabled in IIS then you should turn it OFF
EDIT:
I Think You Should Enable Form/windows authentication. Above code is working fine on My Computer as It redirects to ReturnUrl

Windows authorization in an asp.net mvc4 application

I have an authorization error in my asp.net mvc4 application. My account admin of my machine is this one
my session properties:
in my web.config file i put this snippet:
<authentication mode="Windows" />
<authorization>
<allow users = "Lamloumi" />
<deny users="?"/>
</authorization>
when i launch the application, i can't access to it.
What is the reason of this error? how can i fix my code?
Try to add domain name to allow:
<allow users="DomainName\UserName" />
Try to use this:
<configuration>
<authentication mode="Windows" />
<system.web>
<authorization>
<allow users = "Lamloumi" />
<deny users="?"/>
</authorization>
</system.web>
</configuration>

Disable authentication password prompt IIS7

In IIS 7 Web site I have web.config authorization configuration to allow only definite roles. But one page must be available for all users. The problem is that if user is not in allowed group DOMAIN\group1 then he gets authentication prompt (User name and password) when opening page public_page.aspx that is allowed for all. Despite of that he is in domain. User presses Cancel on the prompt and then this public page is opened successfully and he is even authenticated in it (<%=User.Identity.Name%> in it shows his Windows identity). Browser is IE8. In IIS6 there was no such issue. Why does browser show this username/password prompt if the user is authenticated successfully? And how can I disable it? Maybe I should somehow reconfigure a web.config? Thank you all for help!
<configuration>
<system.web>
<authentication mode="Windows" />
<authorization>
<allow roles="DOMAIN\group1" />
<deny users="*" />
</authorization>
</system.web>
<location path="public_page.aspx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
</configuration>
I resolved the issue by creating web.config by placing public_page.aspx to subfolder /public and created web.config file there with contents:
<configuration>
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</configuration>

IIS 7 Basic authentication location issue

I have a website on IIS 7 using Basic authentication. There are some pages that must be public. I added an this exception in a location element in the web.config and it looks like this:
<location path="Errors">
<system.webServer>
<security>
<authorization>
<remove users="*" roles="" verbs="" />
<add accessType="Allow" users="*" />
</authorization>
</security>
</system.webServer>
</location>
However, if I try to access some files from that folder, I get this error:
HTTP Error 401.2 - Unauthorized You are not authorized to view this
page due to invalid authentication headers. Detailed Error Information
Module IIS Web Core Notification AuthenticateRequest Handler
StaticFile Error Code 0x80070005 Requested URL
http://srv/Errors/error401.htm Physical Path
D:\www\MyApp\Errors\error401.htm Logon Method Not yet determined
Logon User Not yet determined
How can I have Basic Auth over my site, but allow everyone access on the Errors directory?
IIRC, "?" is for anonymous users... So turn on Anonymous authentication aswell and put this in your web.config... Hope it works for you...
IIS7
<location path="Errors">
<system.webServer>
<security>
<authorization>
<remove users="*" roles="" verbs="" />
<add accessType="Allow" users="*" />
</authorization>
</security>
</system.webServer>
</location>
IIS6 (or IIS7 Classic mode)
<location path="Errors">
<system.web>
<authorization>
<allow users="?" />
</authorization>
</system.web>
</location>
EDIT
I'm not sure removing the authenticatied users (*) for errors is a good idea, though... Authenticated users can get errors, too... Show them some love... ;)
EDIT 2 (Changed for Classic mode in IIS7)

Resources