Protegendo conteúdo estático com autenticação de formulários no IIS8

2

Eu tenho um site ASP.NET (.Net 4) hospedado em um servidor IIS8 (Windows 2012), com autenticação de formulários em vigor. Tudo está funcionando bem.

Gostaria agora de apresentar alguns conteúdos estáticos - "ficheiros de ajuda" HTML - mas não quero que estes sejam "deep linkable"; Em outras palavras, as páginas só devem estar disponíveis quando o usuário for autenticação.

Com o Google, encontrei algumas referências sobre como conseguir isso. Então, no meu web.config, eu removi todas as coisas desinteressantes:

<compilation>
 <buildProviders>
    <add extension=".html" type="System.Web.Compilation.PageBuildProvider" />
    <add extension=".htm" type="System.Web.Compilation.PageBuildProvider" />
 </buildProviders>
</compilation>

e

 <handlers> 
      <add name="WebServiceHandlerFactory-ISAPI-4.0_32bit" path="*.asmx,*.html" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
      <add name="WebServiceHandlerFactory-ISAPI-4.0_64bit" path="*.asmx,*.html" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
 </handlers>

... mas ainda posso acessar os arquivos HTML quando não estiverem autenticados.

Alguém pode sugerir o que está errado e como posso proteger o conteúdo HTML estático?

    
por KenD 22.05.2013 / 15:01

3 respostas

4

Assegure-se de que o IIS esteja sendo executado em < strong> Integrated Mode para que o seguinte funcione.

O abaixo é um arquivo Web.config inteiro que você pode colocar em uma subpasta e assume que a autenticação (por exemplo, Autenticação de formulários) foi configurada. Ou extraia as partes autorização e manipuladores e adicione-as à sua raiz Web.config .

<?xml version="1.0"?>
<configuration>
  <system.web>
    <authorization>
      <deny users="?" />
    </authorization>
  </system.web>
  <system.webServer>
    <handlers>
      <add name="HTML" path="*.html" verb="GET, HEAD, POST, DEBUG" type="System.Web.StaticFileHandler" />
      <add name="CSS" path="*.css" verb="GET, HEAD, POST, DEBUG" type="System.Web.StaticFileHandler" />
      <add name="JS" path="*.js" verb="GET, HEAD, POST, DEBUG" type="System.Web.StaticFileHandler" />
      <add name="PNG" path="*.png" verb="GET, HEAD, POST, DEBUG" type="System.Web.StaticFileHandler" />
    </handlers>
  </system.webServer>
</configuration>
    
por 28.11.2013 / 05:35
1

Você pode especificar o tag Location e colocar na lista de permissões toda a pasta.

<location path="YourFiles">
    <system.web>
    <authorization>
        <allow users="?" />
    </authorization>
    </system.web>
</location>
    
por 09.10.2013 / 14:44
-1

Você já tentou manipuladores?

Coloque isso no seu arquivo Web.Config e veja se isso ajuda.

                                        

P.S. Não testado.

    
por 21.07.2015 / 13:04

Tags