Arquitetura de segurança do ASP.NET

Esta seção fornece uma visão geral da infraestrutura de segurança do ASP.NET.A ilustração a seguir mostra as relações entre os sistemas de segurança no ASP.NET.

Arquitetura do ASP.NET

Como mostra a ilustração, todos os clientes da Web se comunicam com aplicativos ASP.NET através do Microsoft Internet Information Services (IIS).O IIS autentica a solicitação, se necessário e, em seguida, localiza o recurso solicitado (como um aplicativo ASP.NET).Se o cliente estiver autorizado, o recurso é disponibilizado.

Quando um aplicativo ASP.NET está sendo executado, ele pode usar recursos de segurança internos do ASP.NET.Além disso, um aplicativo ASP.NET pode usar os recursos de segurança da .NET Framework.Para obter mais informações, consulte Conceitos chaves sobre segurança.

Integrando a autenticação do ASP.NET com o IIS

Além de contar com os recursos de autenticação do IIS, você pode executar autenticação no ASP.NET.Ao considerar a autenticação do ASP.NET, você deve compreender a interação com os serviços de autenticação do IIS.

O IIS pressupõe que um conjunto de credenciais mapeia para uma conta Microsoft Windows NT e que ele deve usar essas credenciais para autenticar um usuário.Há três tipos diferentes de autenticação disponível no IIS 5.0 e IIS 6.0: básica, digest e segurança integrada do Windows (NTLM ou Kerberos).Você pode selecionar o tipo de autenticação para usar nos serviços administrativos do IIS.Para obter mais informações sobre autenticação do IIS, consulte a documentação do IIS.

Se os usuários solicitam um URL que mapeia para um aplicativo ASP.NET, a solicitação e as informações de autenticação são enviadas para o aplicativo.O ASP.NET fornece autenticação de formulários.A autenticação de formulários é um sistema pelo qual as solicitações não autenticadas são redirecionadas para uma página da Web do ASP.NET que você criar.O usuário fornece credenciais e envia a página.Se o aplicativo autentica a solicitação, o sistema emitirá uma permissão de autenticação em um cookie que contém as credenciais ou uma chave para readquirir a identidade.As solicitações subsequentes incluem uma permissão de autenticação com a solicitação.

Observação:

Associação do ASP.NET e controles de login ASP.NET implicitamente funcionam com a autenticação de formulários.

Configurações de segurança do arquivo de configuração

Configurações de segurança do ASP.NET são configurados nos arquivos Machine.config e Web.config.Como com outras informações de configuração, configurações base e as configurações padrão são estabelecidas no arquivo Machine.config no subdiretório Config da instalação atual do .NET Framework.Você pode estabelecer as configurações específicas do aplicativo e específicos do site (incluindo substituir configurações do arquivo Machine.config) nos arquivos Web.config dos diretórios raiz do site e da aplicação.Subdiretórios herdam as configurações do diretório a menos que sejam substituídos por um arquivo Web.config no subdiretório.Para ver um exemplo da maneira na qual o sistema de configuração hierárquica funciona para segurança, consulte o configSections elemento (Geral Settings Esquema).

Há três subseções principais para uma Web. arquivo de configuração: the autenticação, autorização, and identidade seções.Os valores para cada elemento de segurança são normalmente definidos no arquivo Machine.config e substituídos no arquivo web.config no nível do aplicativo, conforme necessário.Todos os subdiretórios herdam automaticamente essas configurações.No entanto, subdiretórios podem ter seus próprios arquivos de configuração que substituem as configurações herdadas.

Observação:

Configuração do ASP.NET aplica-se somente a recursos do ASP.NET, principalmente aqueles registrados para serem manipulados no IIS pela extensão Aspnet_isapi.dll.Configuração do ASP.NET não pode fornecer autorização para recursos não são processados pelo ASP.NET.Portanto, .txt, .htm, .html, .gif, .jpg, .jpeg, .asp e outros tipos de arquivos podem ser acessados por todos os usuários (sujeito às permissões do IIS).Por exemplo, embora os recursos do ASP.NET em um diretório podem ser restritos por um arquivo Web.config, todos os usuários ainda podem visualizar os arquivos localizados no diretório se a pesquisa em diretório estiver ativada e nenhuma outra restrição estiver no lugar.Você pode colocar esses tipos de arquivos sob segurança ASP.NET explicitamente mapeando essas extensões nome de arquivo para a extensão Aspnet_isapi.dll usando a ferramenta de administração do IIS.No entanto, o processamento esses tipos de arquivos por meio do ASP.NET pode afetar o desempenho do site da Web.

Você pode usar o elemento de configuração localização para especificar um determinado arquivo ou diretório aos quais configurações devem aplicar.Para obter mais informações, consulte o configSections elemento (Geral Settings Esquema) e Configurando arquivos específicos e subpastas.Para obter mais detalhes sobre a configuração do ASP.NET em geral, consulte Visão Geral da Configuração ASP.NET.

O exemplo a seguir mostra a sintaxe das seções de segurança de uma arquivo de configuração:

<authentication mode="[Windows|Forms| None]">
  <forms name="name" 
    loginUrl="url" 
    protection="[All|None|Encryption|Validation]"
    path="path" timeout="minutes"
    requireSSL="[true|false]" 
    slidingExpiration="[true|false]">
    <credentials passwordFormat="[Clear|MD5|SHA1]">
      <user name="********" 
        password="********"/>
      </credentials>
  </forms>
</authentication>

<authorization>
  <allow users="comma-separated list of users"
      roles="comma-separated list of roles" />
  <deny  users="comma-separated list of users"
      roles="comma-separated list of roles" />
</authorization>

<identity impersonate ="[true|false]"
  userName="domain\username"
  password="password" />

<trust level="[Full|High|Medium|Low|Minimal]" 
  originUrl=""/>

<securityPolicy>
  <trustLevel name="Full" policyFile="internal"/>
  <trustLevel name="High" policyFile="web_hightrust.config"/>
  <trustLevel name="Medium" policyFile="web_mediumtrust.config"/>
  <trustLevel name="Low"  policyFile="web_lowtrust.config"/>
  <trustLevel name="Minimal" policyFile="web_minimaltrust.config"/>
</securityPolicy>

As configurações padrão para esses elementos são mostradas na tabela a seguir.

Valor padrão

Descrição

<allow roles="" />

Uma sequência vazia indicando que todas as funções são permitidas por padrão.

<allow users="*" />

Uma sequência vazia indicando que todos os usuários têm permissão de acesso (nenhuma autenticação é necessária).

<authentication mode="Windows" />

O tipo de autenticação que determina a fonte do valor User atual.O padrão é o Windows.

<credentials passwordFormat="SHA1" />

O algoritmo de hash usado em senhas.O padrão é SHA1.

<deny roles="" />

Uma sequência vazia indicando que nenhuma função é negada por padrão.

<deny users="" />

Uma sequência vazia indicando que nenhuma usuário é negado por padrão.

<forms loginUrl="logon.aspx" />

A URL para o qual a solicitação é direcionada se você definir o mode de autenticação para Forms e se a solicitação não tiver uma permissão de autenticação válida.

<forms name=".ASPXAUTH" />

O nome com o qual o cookie de autenticação de formulários é armazenado no computador do usuário.

<forms path="/" />

O caminho ao quais os formulários de autenticação se aplica.O padrão é todos os caminhos da raiz do aplicativo para baixo.

<forms protection="All" />

A segurança aplicada para a permissão de autenticação de formulários.Os valores incluem: All, None, Encryption, e Validation.

<forms timeout="30" />

O tempo limite em minutos antes da permissão de autenticação de formulários expirar e dos usuários deverem se autenticar novamente.

<forms requireSSL="false" />

Um valor booleano que indica se uma conexão SSL é necessária para transmitir o cookie de autenticação.

<forms slidingExpiration="true" />

Um valor booleano que indica se expiração relativa está habilitada.Para obter mais informações, consulte a propriedade SlidingExpiration.

<identity impersonate="false" />

Um valor booleano que indica se a representação está desativada.Para obter mais informações, consulte ASP.NET Impersonation.

<identity userName="" />

Uma sequência vazia indicando que nenhuma identidade de usuário é especificada pelo padrão.

<identity password="" />

Uma sequência vazia indicando que nenhuma senha para a identidade do usuário é especificada por padrão.

<trust level="Full" originUrl="" />

As diretivas de segurança que serão aplicadas ao aplicativo.

<trustLevel name="Full" policyFile="internal"/>

O arquivo de diretiva padrão para nível de confiança Total.

<trustLevel name="High" policyFile="web_hightrust.config"/>

O arquivo de diretiva padrão para nível de confiança Alto.

<trustLevel name="Medium" policyFile="web_mediumtrust.config"/>

O arquivo de diretiva padrão para nível de confiança Médio.

<trustLevel name="Low" policyFile="web_lowtrust.config"/>

O arquivo de diretiva padrão para nível de confiança Baixo.

<trustLevel name="Minimal" policyFile="web_minimaltrust.config"/>

O arquivo de diretiva padrão para nível de confiança Mínimo.

Consulte também

Conceitos

Visão Geral da Configuração ASP.NET

Outros recursos

Protegendo sites da Web ASP.NET

Conceitos chaves sobre segurança

Provedor de Autenticação de Formulários