Usuários e funções no site de produção (VB)
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 o ASP.Net Core
A WSAT (Ferramenta de Administração de Site do ASP.NET) fornece uma interface do usuário baseada na Web para definir configurações de Associação e Funções e para criar, editar e excluir usuários e funções. 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 gerenciar 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 aplicativos, 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 serviços de aplicativos. 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, Administração, com Scott e Jisun no papel Administração.
ASP. Os serviços de aplicativos do 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 Revisões de Livros para usar os SqlMembershipProvider
provedores e SqlRoleProvider
para os serviços de Associação e Funções. Esses dois provedores armazenam informações de conta de usuário e função em um banco de dados SQL Server e são os provedores mais usados para aplicativos Web baseados na Internet hospedados em uma empresa de hospedagem na 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 do ASP.NET
ASP.NET inclui uma WSAT ( Ferramenta de Administração de Site ) que facilita a criação e o gerenciamento de contas de usuário e funções e a especificação de regras de autorização baseadas em usuário e função. Para usar o WSAT, clique no ícone configuração de ASP.NET no Gerenciador de Soluções ou vá para o menu Site ou Projeto e escolha a opção Configuração do ASP.NET. Qualquer abordagem inicia um navegador da Web e o 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 appSettings> e SMTP aqui. Você também pode colocar o aplicativo offline e gerenciar configurações de depuração e rastreamento aqui, 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.
Figura 1: A seção 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ó pode ser acessado 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
, receberá uma resposta 404 Não Encontrado. O código que alimenta o WSAT usa as Membership
classes 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; no tutorial Configurando um site que usa serviços de aplicativos, configuramos o site de Revisões de Livros para usar os SqlMembershipProvider
provedores e .SqlRoleProvider
Isso envolveu a adição <membership>
de seções 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 <membership>
seções e <roleManager>
fazem referência aos SqlMembershipProvider
provedores e SqlRoleProvider
em seu type
atributo, respectivamente. Esses provedores armazenam as informações de usuário e função em um banco de dados SQL Server especificado. O banco de dados usado por esses provedores é especificado pelo connectionStringName
atributo , ReviewsConnectionString
, que é 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 para 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, acesse a guia Segurança e adicione um novo usuário chamado Sam com a senha "password!" (menos as aspas). A Figura 2 mostra a tela WSAT ao criar essa conta.
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 databaseConnectionStrings.config
arquivo de volta para o banco de dados de desenvolvimento e visite a Login.aspx
página no ambiente de desenvolvimento. Tente entrar como Sam (consulte a Figura 3).
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, exiba o conteúdo da tabela nos bancos de aspnet_Users
dados de desenvolvimento e 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.
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 de usuários e funções personalizadas
O WSAT fornece um sistema pronto para uso 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 na 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 usuários e funções 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 vários controles web internos relacionados ao logon 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 que os administradores criem 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 Membership
classes 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 serviços de aplicativos, 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 Administração (consulte a Figura 5).
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
classes e Roles
e os controles da Web ASP.NET relacionados ao logon, leia meus Tutoriais de Segurança do Site. Lá, você encontrará diretrizes 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, marcar o código-fonte 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 Web 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 Associação e Funções para gerenciar informações de usuário e função 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 funções no site de produção.
Embora a abordagem WSAT tenha 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.
Programação feliz!
Leitura Adicional
Para obter mais informações sobre os tópicos discutidos neste tutorial, consulte os seguintes recursos:
- Examinando o ASP. Associação, funções e perfil do NET
- Implantando sua própria ferramenta de administração de site
- Visão geral da Ferramenta de Administração de Site
- Tutoriais de segurança do site