Let's say I have the following in a web.config:
<allow roles="Developers" />
<deny users="*"/>
This locks down access on .aspx, .asmx, and other .NET file types, but it's still allowing unauthorized users to open static files like image.jpg. I understand why the web.config isn't asked for authorization information when someone asks for image.jpg (it's not a .NET type, and IIS can bypass it), but how can I lock down a whole application?
Advice I've found online includes:
- create a
<location>
entry for the directory in question and IIS / .NET will pick it up. (It doesn't seem to.) - you need to write your own ISAPI filter and map all sensitive files' extensions to that.
- you don't need to write your own ISAPI filter - just mapping the extensions to aspnet_isapi.dll will do it.
- you don't need to edit IIS at all, just create an httpHandler entry in the web.config for your extensions. (I'd really rather not try to do this for every extension in the application.)
None of this works quite as easily as I remember it being in Apache. What's the simplest thing that might work to ask a visitor for a password and not serve any files (static or not) to any user that doesn't have it?