ASP.NET 2.0 - Usando o Application Services


 A esta altura você já deve saber que se precisar implementar a autenticação e autorização de usuários baseada em formulários em seu site web pode contar com as APIs Membership e Roles do ASP.NET 2.0 ; se você ainda não sabe do que eu estou falando sugiro que leia o artigo : ASP.NET  2.0 - Usando o Roles e MemberShip.

A API MemberShip é implementada usando o modelo de provedor (provider Model) onde você pode definir a interface com opções de personalização. Um dos provedores padrão da ASP.NET 2.0 é o provedor SqlMemberShipProvider o qual usa o banco de dados SQL Server para armazenar a informação sobre autenticação.   Quando você cria uma aplicação ASP.NET o arquivo de configuração já possui um provider chamado AspNetSqlProvider que usa o SqlMemberShipProvider e aponta para o banco de dados ASPNETDB.MDF na pasta App_Code.

Para poder usá-lo você precisa criar um esquema de banco de dados usado pelo provedor. Isto pode ser feito de duas maneiras :

  1. Usar a ferramenta WAT - Web Site Administration Tool - que irá criar um esquema de banco de dados no SQL Server 2005 criando o arquivo ASPNETDB.MDF que será colocado na pasta App_Data;
  2. Usar a ferramenta de linha de comando ASP.NET SQL Server Registration (aspnet_regsql.exe) que irá implementar o esquema em um banco de dados SQL Server 2000 ou SQL Server 2005;
  Quando você usa a WAT para definir o tipo de autenticação como sendo - "From the internet" ela inclui a seguinte linha no seu arquivo web.config:

<authentication mode="Forms">

Se você usar a ferramenta aspnet_regsql.exe você deverá incluir manualmente esta linha ao seu web.config.

Se você usar outro banco de dados que não o ASPNETDB.MDF na pasta App_Code para colocar os esquemas, você terá personalizar a configuração do membership no seu web.config especificando a string de conexão para o banco de dados usado.

A ferramenta WAT  é acionada no menu WebSite, opção ASP.NET Configuration do Visual Web Developer Express e fornece uma interface para configuração do MemberShip e Roles para uma aplicação ASP.NET sendo o responsável pela configuração no arquivo Web.Config.

Vamos mostrar como você pode usar a WAT para configurar a autenticação e autorização em uma aplicação web:

Após iniciar a WAT selecione e aba Security e selecione o tipo de autenticação a implementar via opção : Select Authentication type:

Na próxima página marque a opção : From the internet e clique no botão Done.

Ao retornar você será capaz de criar usuários usando a opção Create User.

Informando os dados do usuário e clicando no botão Create User o usuário será criado;

Após efetuar estes procedimentos , se você espiar na janela Solution Explorer irá verificar que foi criado um banco de dados chamado ASPNETDB.MDF. Na janela Database Explorer podemos visualizar as tabelas que foram criadas. (Além disso foram criadas diversas stored procedures que não estou mostrando.)

Apenas para ter uma visão do relacionamento entre as tabelas do arquivo ASPNETDB.MDF crie um diagrama selecionando as tabelas criadas e você terá a seguinte visão.

Todo este trabalho é feito de forma automática pela ASP.NET livrando-o de criar toda esta estrutura. Até aqui tudo maravilhoso...

Se a sua aplicação web for bem simples, com poucos usuários e sem a necessidade de relacionar os usuários com as demais tabelas do seu projeto tudo se encerra aqui, você tem tudo pronto a seu dispor e é só usar.

Porém, se a sua aplicação possui um volume grande de usuários e for suficientemente complexa de forma a exigir o relacionamento entre as tabelas de usuários e as tabelas da sua aplicação é aconselhável unificar as tabelas em um único banco de dados.

Agora vem a pergunta :

Como eu posso efetuar a integração das tabelas criadas pelo ASP.NET com o meu próprio banco de dados de forma a poder usar os recursos Membership e Roles ?

Para preparar o seu banco de dados de forma a conter todas as tabelas necessárias para controlar a autorização e autenticação de usuários via MemberShip e Roles podemos usar o utilitário aspnet_regsql.exe que você encontra na pasta de instalação da .NET Framework , para a minha máquina este local é: :\WINDOWS\Microsoft.NET\Framework\v2.0.50727.

A ferramenta de registro do servidor SQL do ASP.NET é usada para criar um banco de dados Microsoft SQL Server para uso pelos provedores do SQL Server no ASP.NET, ou para adicionar ou remover opções de um banco de dados já existente. O arquivo Aspnet_regsql.exe está localizado na [pasta drive:]\WINDOWS\Microsoft.NET\Framework\versionNumber no seu servidor Web.

Você pode executar Aspnet_regsql.exe sem quaisquer argumentos de linha de comando para executar um assistente que irá ajudá-lo a especificando informações de conexão para a instalação do SQL Server, e instalando ou removendo os elementos do banco de dados para os recursos participação, Gerenciador função, perfil, Personalização, Web Parts e monitoramento da integridade. (Estado da sessão configuração e dependência cache SQL não são abordadas pelo assistente.) Você também pode executar Aspnet_regsql.exe como uma ferramenta de linha de comando para especificar elementos banco de dados de recursos individuais para adicionar ou remover, usando as opções listadas na tabela abaixo.

http://msdnwiki.microsoft.com/pt-br/mtpswiki/ms229862(VS.80).aspx

Em um prompt de comando , execute o seguinte comando.   aspnet_regsql -S (local) -E -A m

-S especifica o servidor, que é (local) neste exemplo.
-E
especifica o uso de autenticação do Windows para conectar-se ao SQL Server.
-A m
especifica a adição apenas do recurso de associação. Para a autenticação simples em um armazenamento de usuários do SQL Server, apenas o recurso de associação é necessário.

Para obter uma lista completa dos comandos, execute Aspnet_regsql /?.

Resultados esperados

Se o banco de dados Aspnetdb não existir, dois arquivos de banco de dados serão criados:

Aspnetdb.mdf
Aspnetdb_log.LDF

No banco de dados Aspnetdb, as seguintes tabelas são criadas se ainda não existirem:

aspnet_Applications
aspnet_Membership
aspnet_SchemaVersions
aspnet_Users

Vamos supor que temos um banco de dados chamado Escola.mdf e nele uma tabela Aluno e desejamos preparar o ambiente de forma que o nosso banco de dados contenha também as tabelas necessárias para usar os recursos de autenticação e autorização das APIs MemberShip e Roles.

Estando no caminho indicado, digite no prompt do DOS ; ou selecione Iniciar -> Executar e informe o caminho e o nome do utilitário aspnet_regsql.exe:

 

O assistente de configuração será iniciado. Clique em Next> e na tela Select Setup Option marque : Configure SQL Server for application services

Na próxima janela devemos apontar para o banco de dados Escola.mdf da nossa aplicação; O assistente irá apresentar a mensagem indicando o nome do banco de dados escolhido e solicitando a confirmação.

Para encerrar o processo clique em Finish na próxima janela.

Se você examinar o banco de dados Escola.mdf verá várias tabelas com o prefixo aspnet criadas, elas serão usadas para realizar as tarefas de controle de autenticação e autorização. Todo este conjunto de funcionalidade tem um nome : Application Services.

Este procedimento padrão deverá ser usado sempre que você desejar utilizar as funcionalidades do Application Services em seu próprio banco de dados sem usar o ASPNETDB.MDF.

O artigo termina aqui, mas o assunto apenas começou , aguarde em breve uma aplicação prática usando os recursos das APIs MemberShip e Roles.

Até o próximo artigo...


José Carlos Macoratti