INFO: Descrição geral de segurança do ASP.NET

Traduções de Artigos Traduções de Artigos
Artigo: 306590 - Ver produtos para os quais este artigo se aplica.
Este artigo faz referência à seguinte Microsoft .NET Framework Class Library espaços de nomes:
  • System.Web.Security
  • System.Web.Principal
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Este artigo fornece uma introdução ao ASP.NET segurança.

Para descrições gerais do ASP.NET adicionais, consulte o seguinte artigo da base de dados de conhecimento da Microsoft:
305140INFO: Plano de ASP.NET

Mais Informação

ASP.NET dá-lhe mais controlo para implementar segurança para a aplicação. Segurança do ASP.NET funciona em conjunto com a segurança do ISS (Serviços de informação Internet Information Services) e inclui serviços de autenticação e autorização para implementar o modelo de segurança do ASP.NET. O ASP.NET inclui também uma funcionalidade de segurança baseada em funções que pode implementar para Microsoft Windows e contas de utilizador do Windows não.

Este artigo está dividido nas seguintes secções:

Fluxo de segurança com um pedido

Os passos seguintes descrevem a sequência de eventos quando um cliente faz um pedido:
  1. Um cliente pede uma página .aspx que resida no IIS servidor.
  2. As credenciais do cliente são passadas para o IIS.
  3. O IIS autentica o cliente e reencaminha o token autenticado juntamente com o pedido do cliente para o processo de trabalho do ASP.NET.
  4. Com base no token autenticado do IIS e as definições de configuração da aplicação da Web, o ASP.NET decide se deve representar um utilizador num thread que está a processar o pedido. Uma diferença distinta entre Microsoft Active Server Pages (ASP) e ASP.NET, o ASP.NET representa já não o utilizador autenticado por predefinição. Para activar a representação, tem de definir o atributo representar a secção de identidade no ficheiro Web.config para true .
Para obter mais informações sobre o fluxo de segurança, consulte o tópico seguinte no .NET Framework Software Development Kit (SDK) documentação:
Fluxo de dados do ASP.NET
http://msdn.microsoft.com/en-us/library/xa68twcb(vs.71).aspx
Para obter informações adicionais sobre representar no ASP.NET, clique no número de artigo existente abaixo para visualizar o artigo na base de dados de conhecimento da Microsoft:
306158INFO: Implementar representação de uma aplicação do ASP.NET

Definições de configuração relacionados

O IIS mantém definições de configuração relacionados com a segurança do IIS da metabase. No entanto, o ASP.NET mantém a segurança (e outros) definições de configuração nos ficheiros de configuração XML (Extensible Markup Language). Apesar de Isto geralmente simplifica a implementação da aplicação do ponto de vista da segurança, o modelo de segurança que adopta a aplicação necessita a configuração correcta do tanto a metabase do IIS e a aplicação do ASP.NET através do respectivo ficheiro de configuração (Web.config).

As seguintes secções de configuração relacionados com a segurança do ASP.NET:

Autenticação

A autenticação é o processo através do qual obter credenciais de identificação como o nome do utilizador e palavra-passe e validar essas credenciais através de uma autoridade.

O ASP.NET fornece quatro fornecedores de autenticação:

Autenticação de formulários

Autenticação por formulários refere-se a um sistema no qual pedidos não autenticados são redireccionados para um formulário de HTML (Hypertext Markup Language) na qual os utilizadores escrever as respectivas credenciais. Depois do utilizador fornece credenciais e submete o formulário, a aplicação autenticar o pedido e o sistema emite uma permissão de autorização sob a forma de um cookie. Este cookie contém as credenciais ou uma chave para readquirir a identidade. Os pedidos subsequentes a partir do browser incluem automaticamente o cookie.

Para obter mais informações sobre autenticação de formulários, consulte o tópico seguinte no .NET Framework SDK documentação:
O fornecedor de autenticação de formulários
http://msdn.microsoft.com/en-us/library/907hb5w9(vs.71).aspx
Para obter informações adicionais autenticação de formulários no ASP.NET, clique no número de artigo existente abaixo para visualizar o artigo na base de dados de conhecimento da Microsoft:
301240COMO: Implementar Forms-Based Authentication in a aplicação do ASP.NET utilizando o C# .NET

Autenticação do Windows

Na autenticação do Windows, o IIS executa a autenticação e o token autenticado é reencaminhado para o processo de trabalho do ASP.NET. A vantagem de utilizar o Windows é de autenticação que requer um mínimo de codificação. Poderá pretender utilizar o Windows autenticação para representar a conta de utilizador do Windows que o IIS autentica antes de entregar o pedido para o ASP.NET.

Para obter mais informações sobre a autenticação do Windows, consulte o tópico seguinte na documentação do .NET Framework SDK:
O fornecedor WindowsAuthenticationModule
http://msdn.microsoft.com/en-us/library/907hb5w9(vs.71).aspx

Autenticação de Passport

Autenticação por conta Passport é um autenticação centralizada serviço, que fornece a Microsoft, que oferece uma sessão única e serviços de perfil principal para sites membros. Normalmente, autenticação por conta Passport é utilizada quando tiver sessão única capacidade em vários domínios.

Para obter mais informações sobre autenticação por conta Passport, consulte o tópico seguinte na documentação do .NET Framework SDK:
O fornecedor de autenticação de Passport
http://msdn.microsoft.com/en-us/library/f8e50t0f(vs.71).aspx

Autenticação predefinida

Autenticação predefinida é utilizada quando não pretender que qualquer segurança no seu aplicativo da Web; o acesso anónimo é necessário para este fornecedor de segurança. Entre todos os fornecedores de autenticação, predefinição autenticação fornece desempenho máximo para a aplicação. Este fornecedor de autenticação também é utilizado quando utiliza o módulo de segurança personalizado.

Autorização

Autorização é o processo que verifica se o utilizador autenticado tem acesso a recursos pedidos.

O ASP.NET oferece os seguintes fornecedores de autorização:

FileAuthorization

A classe FileAuthorizationModule executa autorização de ficheiros e está activa quando utiliza a autenticação do Windows. FileAuthorizationModule é responsável por efectuar verificações de controlo de acesso do Windows listas (ACL) para determinar se um utilizador deve têm acesso.

UrlAuthorization

A classe UrlAuthorizationModule efectua a autorização de URL (Uniform Resource Locator), que controla a autorização com base no espaço de nomes de URI. Espaços de nomes URI podem ser bastante diferentes dos caminhos de pasta e ficheiro físicos que utilizam as permissões de NTFS.

UrlAuthorizationModule implementa tanto declarações de autorização positivos e negativos; ou seja, pode utilizar o módulo para selectivamente permitir ou negar acesso a partes arbitrários do espaço de nomes de URI para utilizadores, funções (tais como o Gestor, os técnicos de testes e administradores) e verbos (tal como GET e POST).

Para mais informações sobre autorização no ASP.NET, consulte o tópico seguinte na documentação do .NET Framework SDK:
Autorização do ASP.NET
http://msdn.microsoft.com/en-us/library/wce3kxhd(vs.71).aspx

Segurança baseada em funções

Segurança baseada em ASP.NET é semelhante a segurança baseada em funções que utilizarem o Microsoft COM + e Microsoft Transaction Server (MTS), apesar de existirem diferenças importantes. Segurança baseada em ASP.NET não está limitada a contas e grupos do Windows. Por exemplo, se a autenticação do Windows e de representação estiver activada, a identidade do utilizador é uma identidade do Windows (User.Identity.Name = "Domain\username"). Pode verificar as identidades de associação a funções específicas e restringir o acesso em conformidade. Por exemplo:

código do Visual Basic .NET
If User.IsInRole("BUILTIN\Administrators") Then
   Response.Write("You are an Admin")
Else If User.IsInRole("BUILTIN\Users") then
   Response.Write("You are a User")
Else
   Response.Write("Invalid user")
End if
				
Código visual C# .NET
if ( User.IsInRole("BUILTIN\\Administrators"))
   Response.Write("You are an Admin");
else if (User.IsInRole("BUILTIN\\Users"))
   Response.Write("You are a User");
else
   Response.Write("Invalid user");
				
se estiver a utilizar autenticação de formulários, as funções não estão atribuídas ao utilizador autenticado; tem de efectuar este procedimento através de programação. Para atribuir funções para o utilizador autenticado, utilize o evento OnAuthenticate do módulo de autenticação (os formulários que é o módulo de autenticação neste exemplo) para criar um novo objecto GenericPrincipal e atribuir à propriedade de utilizador do HttpContext. O seguinte código ilustra isto:

código do Visual Basic .NET
Public Sub Application_AuthenticateRequest(s As Object, e As EventArgs)
   If (Not(HttpContext.Current.User Is Nothing)) Then
      If HttpContext.Current.User.Identity.AuthenticationType = "Forms" Then
         Dim id as System.Web.Security.FormsIdentity = HttpContext.Current.User.Identity
         Dim myRoles(3) As String
         myRoles(0)= "managers"
         myRoles(1)= "testers"
         myRoles(2)= "developers"
         HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id,myRoles) 
      End If
   End If
End Sub
				
Código visual C# .NET
public void Application_AuthenticateRequest(Object s, EventArgs e)      
{
   if (HttpContext.Current.User != null)
   {
      if (HttpContext.Current.User.Identity.AuthenticationType == "Forms" ) 
      {
         System.Web.Security.FormsIdentity id = HttpContext.Current.User.Identity;
         String[] myRoles = new String[3];
         myRoles[0]= "managers";
         myRoles[1]= "testers";
         myRoles[2]= "developers";
         HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id,myRoles);
      }
   }
} 
				
para verificar se o utilizador está numa função específica e restringir o acesso em conformidade, utilize o seguinte código (ou outra semelhante) nas páginas .aspx:

código do Visual Basic .NET
If User.IsInRole("managers") Then
   Response.Write("You are a Manager")
Else If  User.IsInRole("testers") Then
   Response.Write("You are a Tester")
Else If User.IsInRole("developers") Then
   Response.Write("You are a Developer")
End if
				
Visual C# .NET Code
if (User.IsInRole("managers"))
   Response.Write("You are a Manager");
else if (User.IsInRole("testers"))
   Response.Write("You are a Tester");
else if (User.IsInRole("developers"))
   Response.Write("You are a Developer");
				
Para obter informações adicionais, clique no número de artigo existente abaixo para visualizar o artigo na base de dados de conhecimento da Microsoft:
306238COMO: Implementar com função de segurança com autenticação baseada em formulários na sua aplicação do ASP.NET utilizando o Visual Basic .NET
Para mais informações sobre segurança baseada em funções, consulte o tópico seguinte na documentação do .NET Framework SDK:
Segurança baseada em funções
http://msdn.microsoft.com/en-us/library/52kd59t0(vs.71).aspx

Referências

Para obter informações sobre directrizes de segurança do ASP.NET, consulte a seguinte documentação técnica da MSDN:
Autenticação no ASP.NET: orientações de segurança do .NET
http://msdn.microsoft.com/en-us/library/ms978378.aspx
Para mais informações gerais sobre ASP.NET, consulte o newsgroup MSDN seguinte:
microsoft.public.dotnet.framework.aspnet
Para obter informações adicionais, clique nos números de artigo existentes abaixo para visualizar os artigos na Microsoft Knowledge Base:
311094Erro: Mensagem de erro "ConfigurationException" quando representada contas ler configuração
306359PROBLEMA: Request.ServerVariables("LOGON_USER") devolve cadeia vazia no ASP.NET
313091COMO: Criar chaves utilizando o Visual Basic .NET para utilizar na autenticação de formulários
313116PROBLEMA: Não são dirigidos pedidos de autenticação de formulários para loginUrl página
Para mais informações, consulte os seguintes livros:
Reilly, j. Douglas Designing Microsoft ASP.NET Applications. A Microsoft Press, 2001.

Esposito, Dino. Building Web Solutions with ASP.NET and ADO.NET. A Microsoft Press, 2001.

Propriedades

Artigo: 306590 - Última revisão: 29 de outubro de 2007 - Revisão: 3.14
A informação contida neste artigo aplica-se a:
  • Microsoft ASP.NET 1.0
  • Microsoft ASP.NET 1.1
Palavras-chave: 
kbmt kbproductlink kbarttyperoadmap kbconfig kbinfo kbsecurity kbweb KB306590 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 306590

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com