Compartilhar via


Usuários e funções no site de produção (C#)

por Scott Mitchell

Observação

Desde que este artigo foi escrito, os provedores de associação ASP.NET foram substituídos pelo ASP.NET Identity. É altamente recomendável atualizar aplicativos para usar a plataforma ASP.NET Identity em vez dos provedores de associação apresentados no momento em que este artigo foi escrito. ASP.NET Identity tem várias vantagens em relação ao sistema de associação ASP.NET, incluindo:

  • Melhor desempenho
  • Extensibilidade e testabilidade aprimoradas
  • Suporte para OAuth, OpenID Connect e autenticação de dois fatores
  • Suporte à identidade baseada em declarações
  • Melhor interoperabilidade com ASP.Net Core

A ferramenta de administração de sites ASP.NET (WSAT) fornece uma interface do usuário baseada na web para configuração das definições de Membership e Roles e para criar, editar e excluir usuários e roles. Infelizmente, o WSAT só funciona quando visitado do localhost, o que significa que você não pode acessar a Ferramenta de Administração do site de produção por meio do navegador. A boa notícia é que há soluções alternativas que possibilitam o gerenciamento de usuários e funções na produção. Este tutorial analisa essas soluções alternativas e outras.

Introdução

ASP.NET 2.0 introduziu vários serviços de aplicativo, que são um conjunto de serviços de bloco de construção que você pode adicionar ao seu aplicativo Web. Adicionamos os serviços de Associação e Funções ao site Revisões de Livros no tutorial Configurando um Site que Usa os Serviços de Aplicativo. O serviço Associação facilita a criação e o gerenciamento de contas de usuário; o serviço Funções oferece uma API para categorizar usuários em grupos. O site Book Reviews tem três contas de usuário - Scott, Jisun e Alice - e um único papel, Administrador, com Scott e Jisun na função de Administrador.

Os serviços de aplicações do ASP.NET não estão vinculados a uma implementação específica. Em vez disso, você instrui os serviços de aplicativo a usar um provedor específico e esse provedor implementa o serviço usando uma tecnologia específica. Configuramos o aplicativo Web Book Reviews para usar os provedores SqlMembershipProvider e SqlRoleProvider para os serviços de Membros e Papéis. Esses dois provedores armazenam informações de conta de usuário e função em um banco de dados do SQL Server e são os provedores mais usados para aplicativos Web baseados na Internet hospedados em uma empresa de hospedagem da Web.

Um desafio comum para os desenvolvedores que usam os serviços de Associação e Funções é gerenciar os usuários e as funções no ambiente de produção. Como excluir uma conta de usuário do site de produção, adicionar uma nova função ou adicionar um usuário existente a uma função existente? Este tutorial explora diferentes técnicas para gerenciar usuários e funções no site de produção.

Usando a Ferramenta de Administração de Site ASP.NET

ASP.NET inclui uma WSAT ( Ferramenta de Administração de Site ) que facilita a criação e o gerenciamento de contas e funções de usuário e especificar regras de autorização baseadas em função e usuário. Para usar o WSAT, clique no ícone ASP.NET Configuração no Gerenciador de Soluções ou vá para o menu Site ou Projeto e escolha a opção configuração de ASP.NET. Qualquer abordagem inicia um navegador da Web e aponta para o WSAT em um endereço como: http://localhost:portNumber/asp.netwebadminfiles/default.aspx?applicationPhysicalPath=pathToApplication

O WSAT é dividido em três seções:

  • Segurança – gerenciar usuários, funções e regras de autorização.
  • ApplicationConfiguration – gerencie as configurações de <appSettings> e de SMTP a partir daqui. Você também pode colocar o aplicativo offline e gerenciar as configurações de depuração e rastreamento daqui, bem como especificar a página de erro personalizada padrão.
  • ProviderConfiguration – configure os provedores usados pelos serviços de aplicativo.

A seção Segurança (mostrada na Figura 1) inclui links para criar novos usuários, gerenciar usuários, criar e gerenciar funções e criar e gerenciar regras de acesso. A partir daqui, você pode adicionar uma nova função ao sistema, excluir um usuário existente ou adicionar ou remover funções de uma conta de usuário específica.

Captura de tela que mostra as opções para gerenciar usuários e funções.

Figura 1: A seção de segurança do WSAT inclui opções para gerenciar usuários e funções
(Clique para exibir a imagem em tamanho real)

Infelizmente, o WSAT só está acessível localmente. Você não pode visitar o WSAT em seu site de produção remoto; se você visitar www.yoursite.com/asp.netwebadminfiles/default.aspx , obterá uma resposta 404 Não Encontrada. O código que alimenta o WSAT usa as classes Membership e Roles no .NET Framework para criar, editar e excluir usuários e funções. Essas classes consultam as informações de configuração do aplicativo Web para determinar qual provedor usar; de volta ao tutorial Configurando um site que usa os Serviços de Aplicativos, configuramos o site de Revisões de Livros para usar o SqlMembershipProvider e o SqlRoleProvider provedores. Isso implicava adicionar as seções <membership> e <roleManager> a Web.config.

<?xml version="1.0"?>
<configuration>
  ...

  <connectionStrings configSource="ConfigSections\databaseConnectionStrings.config" />

  <system.web>
  ...

  <membership defaultProvider="ReviewMembership">
  <providers>
  <clear />

  <add type="System.Web.Security.SqlMembershipProvider" 
  name="ReviewMembership" 
  connectionStringName="ReviewsConnectionString" 
  applicationName="BookReviews" />
  </providers>
  </membership>

  <roleManager enabled="true" defaultProvider="ReviewRole">
  <providers>
  <clear />

  <add type="System.Web.Security.SqlRoleProvider" 
  name="ReviewRole" 
  connectionStringName="ReviewsConnectionString" 
  applicationName="BookReviews" />
  </providers>
  </roleManager>
  </system.web>

  ...
</configuration>

Observe que as seções <membership> e <roleManager> fazem referência aos provedores SqlMembershipProvider e SqlRoleProvider em seu atributo type, respectivamente. Esses provedores armazenam as informações de usuário e função em um banco de dados do SQL Server especificado. O banco de dados usado por esses provedores é especificado pelo connectionStringName atributo, ReviewsConnectionStringque é definido no ~/ConfigSections/databaseConnectionStrings.config arquivo. Lembre-se de que o databaseConnectionStrings.config arquivo no ambiente de desenvolvimento contém a cadeia de conexão para o banco de dados de desenvolvimento, enquanto o databaseConnectionStrings.config arquivo em produção contém a cadeia de conexão com o banco de dados de produção.

Em poucas palavras, o WSAT deve ser acessado localmente por meio do ambiente de desenvolvimento e funciona com as informações de usuário e função no banco de dados especificado no databaseConnectionStrings.config arquivo. Consequentemente, se alterarmos as informações da cadeia de conexão no databaseConnectionStrings.config arquivo no ambiente de desenvolvimento, poderemos usar o WSAT localmente para gerenciar usuários e funções no ambiente de produção.

Para ilustrar essa funcionalidade, abra o databaseConnectionStrings.config arquivo no Visual Studio no ambiente de desenvolvimento e substitua a cadeia de conexão do banco de dados de desenvolvimento pela cadeia de conexão do banco de dados de produção. Em seguida, inicie o WSAT, vá para a guia Segurança e adicione um novo usuário chamado Sam. A Figura 2 mostra a tela WSAT ao criar essa conta.

Captura de tela que mostra o novo usuário criado no ambiente de produção.

Figura 2: Criar um novo usuário chamado Sam no ambiente de produção
(Clique para exibir a imagem em tamanho real)

Como alteramos a cadeia de conexão em databaseConnectionStrings.config para apontar para o servidor de banco de dados de produção, Sam foi adicionado como um usuário no ambiente de produção. Para verificar isso, altere a cadeia de conexão no arquivo databaseConnectionStrings.config de volta para o banco de dados de desenvolvimento e depois visite a página Login.aspx no ambiente de desenvolvimento. Tente entrar como Sam (consulte a Figura 3).

Captura de tela que mostra que você não pode entrar como Sam no ambiente de desenvolvimento.

Figura 3: Você não pode entrar como Sam no ambiente de desenvolvimento
(Clique para exibir a imagem em tamanho real)

Você não pode entrar como Sam no ambiente de desenvolvimento porque as informações da conta de usuário não existem no banco de dados local. Em vez disso, foi adicionado ao banco de dados de produção. Para verificar isso, visualize o conteúdo da tabela aspnet_Users nos bancos de dados de desenvolvimento e de produção. No ambiente de desenvolvimento, deve haver apenas três registros para os usuários Scott, Jisun e Alice. No entanto, a aspnet_Users tabela no banco de dados de produção tem quatro registros: Scott, Jisun, Alice e Sam. Consequentemente, Sam pode entrar por meio do site em produção, mas não por meio do ambiente de desenvolvimento.

Captura de tela que mostra que Sam pode entrar no site de produção.

Figura 4: Sam pode entrar no site de produção
(Clique para exibir a imagem em tamanho real)

Observação

Não se esqueça de alterar a cadeia de conexão no databaseConnectionStrings.config arquivo de volta para a cadeia de conexão do banco de dados de desenvolvimento quando terminar de trabalhar com o WSAT, caso contrário, você trabalhará com dados de produção ao testar o site por meio do ambiente de desenvolvimento. Lembre-se também de que, embora a técnica que acabamos de discutir nos permita usar o WSAT para gerenciar remotamente usuários e funções, as alterações em qualquer uma das outras opções de configuração do WSAT (regras de acesso, configurações de SMTP, configurações de depuração e rastreamento e assim por diante) modificam o Web.config arquivo. Consequentemente, todas as alterações feitas nas configurações se aplicam ao ambiente de desenvolvimento e não ao ambiente de produção.

Criando páginas da Web de gerenciamento personalizado de usuário e função

O WSAT fornece um sistema pronto para gerenciar usuários e funções, mas só pode ser iniciado localmente e requer fazer alterações nas informações da cadeia de conexão para gerenciar os usuários e as funções em produção. A maioria dos sites que dão suporte a contas de usuário também inclui várias páginas da Web de administração de função e de usuário que permitem aos administradores gerenciar usuários e funções de páginas dentro do site. Essas páginas de administração baseadas na Web facilitam muito o gerenciamento de usuários e funções e são essenciais para sites em que pode haver muitos administradores ou administradores que não têm acesso ou o plano de fundo técnico para usar o Visual Studio para iniciar o WSAT.

ASP.NET inclui uma série de controles Web relacionados ao logon interno que tornam a implementação de muitas dessas páginas da Web administrativas tão fácil quanto arrastar e soltar. Por exemplo, você pode criar uma página para os administradores criarem uma nova conta de usuário arrastando o controle CreateUserWizard para a página e definindo algumas propriedades. Na verdade, a página para criar usuários no WSAT mostrado na Figura 2 usa o mesmo controle CreateUserWizard que você pode adicionar às suas páginas. Além disso, as funcionalidades dos serviços de Associação e Funções estão disponíveis programaticamente por meio das classes Membership e Roles no .NET Framework. Com essas classes, você pode escrever código para criar, editar e excluir usuários e funções, bem como para adicionar ou remover usuários a funções, para determinar quais usuários estão em quais funções e para executar outras tarefas relacionadas ao usuário e à função.

No tutorial Configurando um site que usa os Serviços de Aplicativo, adiciono uma página à Admin pasta chamada .CreateAccount.aspx Esta página permite que um administrador adicione uma nova conta de usuário ao site e especifique se o usuário recém-criado está ou não na função de Administrador (consulte a Figura 5).

Captura de tela que mostra que os administradores podem criar novas contas de usuário.

Figura 5: Os administradores podem criar novas contas de usuário
(Clique para exibir a imagem em tamanho real)

Para obter uma visão mais detalhada da criação de páginas de administração de usuários e funções, juntamente com instruções passo a passo sobre como usar as Membership e Roles classes e os controles da Web relacionados ao login do ASP.NET, leia meus Tutoriais de Segurança do Site. Lá, você encontrará orientações sobre como criar páginas da Web para criar novas contas, criar e gerenciar funções, atribuir usuários a funções e outras tarefas administrativas comuns.

Para implementar a funcionalidade semelhante ao WSAT no site de produção, você sempre pode criar sua própria série de páginas da Web que implementam os recursos do WSAT. Para ajudar a começar, confira o código-fonte do WSAT, que está localizado na pasta %WINDIR%\Microsoft.NET\Framework\v2.0.50727\ASP.NETWebAdminFiles. Outra opção é usar a alternativa WSAT de Dan Clem, que ele compartilha em seu artigo, Rolling Your Own Site Administration Tool. Dan orienta os leitores durante o processo de criação de uma ferramenta personalizada semelhante ao WSAT, inclui o código-fonte de seu aplicativo para download (em C#) e fornece instruções passo a passo para adicionar seu WSAT personalizado a um site hospedado.

Resumo

A Ferramenta de Administração de Site ASP.NET (WSAT) pode ser usada em conjunto com os serviços de aplicativo de Associação e Funções para gerenciar informações de usuários e funções para seu site. Infelizmente, o WSAT só pode ser acessado localmente e não pode ser visitado no site de produção. No entanto, alterando a cadeia de conexão no ambiente de desenvolvimento para apontar para o banco de dados de produção, você pode usar o WSAT para gerenciar os usuários e as funções no site de produção.

Embora a abordagem WSAT oferece uma maneira rápida e fácil de gerenciar usuários e funções, ela exige a inicialização do WSAT do Visual Studio, bem como alterações temporárias nas informações da cadeia de conexão. O WSAT oferece uma maneira rápida de gerenciar usuários e funções em produção, mas é complicado e não funciona bem para sites com vários administradores ou com administradores que não têm ou não estão familiarizados com o Visual Studio e o WSAT. Por esses motivos, a maioria dos sites que dão suporte a contas de usuário inclui um conjunto de páginas da Web administrativas. Esse conjunto de páginas da Web elimina a necessidade do WSAT e usado por vários usuários administrativos de qualquer computador.

Boas programações!

Leitura Adicional

Para obter mais informações sobre os tópicos discutidos neste tutorial, consulte os seguintes recursos: