Autenticar usuários com a autenticação do Windows (VB)
pela Microsoft
Saiba como usar autenticação do Windows no contexto de um aplicativo MVC. Você aprenderá a habilitar autenticação do Windows no arquivo de configuração da Web do aplicativo e como configurar a autenticação com o IIS. Por fim, você aprenderá a usar o atributo [Autorizar] para restringir o acesso a ações do controlador a determinados usuários ou grupos do Windows.
O objetivo deste tutorial é explicar como você pode aproveitar os recursos de segurança integrados aos Serviços de Informações da Internet para proteger por senha os modos de exibição em seus aplicativos MVC. Você aprenderá a permitir que as ações do controlador sejam invocadas apenas por usuários ou usuários específicos do Windows que são membros de grupos específicos do Windows.
Usar autenticação do Windows faz sentido quando você está criando um site interno da empresa (um site de intranet) e deseja que seus usuários possam usar seus nomes de usuário e senhas padrão do Windows ao acessar o site. Se você estiver criando um site voltado para fora (um site da Internet), considere usar a autenticação do Forms.
Habilitando a autenticação do Windows
Quando você cria um novo aplicativo ASP.NET MVC, autenticação do Windows não é habilitado por padrão. A autenticação de formulários é o tipo de autenticação padrão habilitado para aplicativos MVC. Você deve habilitar autenticação do Windows modificando o arquivo de configuração da Web (web.config) do aplicativo MVC. Localize a seção de autenticação> e modifique-a <para usar o Windows em vez da autenticação do Forms da seguinte maneira:
<authentication mode="Windows">
</authentication>
Quando você habilita autenticação do Windows, o servidor Web se torna responsável pela autenticação de usuários. Normalmente, há dois tipos diferentes de servidores Web que você usa ao criar e implantar um aplicativo MVC ASP.NET.
Primeiro, ao desenvolver um aplicativo MVC, você usa o ASP.NET Servidor Web de Desenvolvimento incluído no Visual Studio. Por padrão, o ASP.NET Development Web Server executa todas as páginas no contexto da conta atual do Windows (qualquer conta que você usou para fazer logon no Windows).
O ASP.NET Development Web Server também dá suporte à autenticação NTLM. Você pode habilitar a autenticação NTLM clicando com o botão direito do mouse no nome do projeto na janela Gerenciador de Soluções e selecionando Propriedades. Em seguida, selecione a guia Web e marcar caixa de seleção NTLM (consulte a Figura 1).
Figura 1 – Habilitar a autenticação NTLM para o servidor Web de desenvolvimento de ASP.NET
Para um aplicativo Web de produção, use o IIS como servidor Web. O IIS dá suporte a vários tipos de autenticação, incluindo:
- Autenticação básica – definida como parte do protocolo HTTP 1.0. Envia nomes de usuário e senhas em texto não criptografado (codificado em Base64) pela Internet. – Autenticação digest – envia um hash de uma senha, em vez da própria senha, pela Internet. – Autenticação integrada do Windows (NTLM) – o melhor tipo de autenticação a ser usado em ambientes de intranet usando janelas. – Autenticação de Certificado – habilita a autenticação usando um certificado do lado do cliente. O certificado é mapeado para uma conta de usuário do Windows.
Observação
Para obter uma visão geral mais detalhada desses diferentes tipos de autenticação, consulte https://msdn.microsoft.com/library/aa292114(VS.71).aspx.
Você pode usar o Gerenciador de Serviços de Informações da Internet para habilitar um tipo específico de autenticação. Lembre-se de que todos os tipos de autenticação não estão disponíveis no caso de todos os sistemas operacionais. Além disso, se você estiver usando o IIS 7.0 com o Windows Vista, precisará habilitar os diferentes tipos de autenticação do Windows antes que eles apareçam no Gerenciador de Serviços de Informações da Internet. Abra Painel de Controle, Programas, Programas e Recursos, ative ou desative os recursos do Windows e expanda o nó Serviços de Informações da Internet (consulte a Figura 2).
Figura 2 – Habilitar recursos do Windows IIS
Usando os Serviços de Informações da Internet, você pode habilitar ou desabilitar diferentes tipos de autenticação. Por exemplo, a Figura 3 ilustra como desabilitar a autenticação anônima e habilitar a autenticação integrada do Windows (NTLM) ao usar o IIS 7.0.
Figura 3 – Habilitando a autenticação integrada do Windows
Autorizando usuários e grupos do Windows
Depois de habilitar autenticação do Windows, você pode usar o atributo Authorize> para controlar o <acesso a controladores ou ações do controlador. Esse atributo pode ser aplicado a um controlador MVC inteiro ou a uma ação específica do controlador.
Por exemplo, o controlador Home na Listagem 1 expõe três ações chamadas Index(), CompanySecrets() e StephenSecrets(). Qualquer pessoa pode invocar a ação Index(). No entanto, somente os membros do grupo gerenciador local do Windows podem invocar a ação CompanySecrets(). Por fim, somente o usuário de domínio do Windows chamado Stephen (no domínio Redmond) pode invocar a ação StephenSecrets().
Listagem 1 – Controllers\HomeController.vb
<HandleError()> _
Public Class HomeController
Inherits System.Web.Mvc.Controller
Function Index()
Return View()
End Function
<Authorize(Roles:="Managers")> _
Function CompanySecrets()
Return View()
End Function
<Authorize(Users:="redmond\swalther")> _
Function StephenSecrets()
Return View()
End Function
End Class
Observação
Devido ao UAC (Controle de Conta de Usuário) do Windows, ao trabalhar com o Windows Vista ou o Windows Server 2008, o grupo local de Administradores se comportará de forma diferente de outros grupos. O <atributo Authorize> não reconhecerá corretamente um membro do grupo local Administradores, a menos que você modifique as configurações do UAC do computador.
Exatamente o que acontece quando você tenta invocar uma ação do controlador sem ter as permissões corretas depende do tipo de autenticação habilitado. Por padrão, ao usar o servidor de desenvolvimento ASP.NET, você simplesmente obtém uma página em branco. A página é atendida com um status de resposta HTTP não autorizado 401 .
Se, por outro lado, você estiver usando o IIS com a autenticação Anônima desabilitada e a autenticação Básica habilitada, você continuará recebendo um prompt de caixa de diálogo de logon sempre que solicitar a página protegida (consulte a Figura 4).
Figura 4 – Caixa de diálogo de logon de autenticação básica
Resumo
Este tutorial explicou como você pode usar autenticação do Windows no contexto de um aplicativo MVC ASP.NET. Você aprendeu a habilitar autenticação do Windows no arquivo de configuração da Web do aplicativo e como configurar a autenticação com o IIS. Por fim, você aprendeu a usar o atributo Authorize> para restringir o <acesso a ações do controlador a determinados usuários ou grupos do Windows.