ASP.NET Passo a Passo Procedimento de Logon Conteúdo do Capítulo 1. 2. 3. Implementar a autenticação de formulários Utilizar controles de logon do ASP.NET Fazer autorização baseada em papéis ASP.NET Passo a Passo Procedimento de Logon Gerenciamento de Usuários 1. 2. 3. 4. 5. 6. Crie uma aplicação Web (Empty Web Application) de nome SecureSite. Adicione na aplicação um formulário de nome WebForm1.aspx. Adicione ao formulário um rótulo com o texto “Parabens, você está no nosso site” Devemos agora criar um banco de dados para cadastro das configurações dos usuários do ASP.NET. Execute o programa aspnet_regsql.exe para criar o banco de dados de usuário ou adicionar as tabelas no banco de dados da aplicação. o programa aspnet_regsql.exe se encontra no diretório c:\Windows\Microsoft.NET\Framework\Vxxxxx ASP.NET Passo a Passo Procedimento de Logon Gerenciamento de Usuários 7. 8. 9. Clique na opção “Configurar o SQL Server para serviços de aplicativos”. Na próxima tela informe a autenticação do SQL e mantenha a opção de banco de dados padrão. Esta opção irá criar um banco de dados exclusivo para autenticação ( de nome aspnetdb), separado dos dados da aplicação. Caso deseje incluir apenas as tabelas de autenticação no banco de dados da aplicação, selecione o banco desejado. ASP.NET Passo a Passo Procedimento de Logon Gerenciamento de Usuários 10. Adicione uma string de conexão de nome aspnetdbConnectionString na aplicação e direcione para o banco de dados de autenticação de usuários criado (aspnetdb). A string de conexão para autenticação SQL é mostrada abaixo e para autenticação Windows a seguir <connectionStrings> <add name="aspnetdbConnectionString" connectionString="Data Source=.; Initial Catalog=aspnetdb;Persist Security Info=True; User ID=sa;Password=sa" providerName="System.Data.SqlClient" /> </connectionStrings> <connectionStrings> <add name="aspnetdbConnectionString" connectionString="Data Source=.; Initial Catalog=aspnetdb;Integrated Security=True" providerName="System.Data.SqlClient" /> </connectionStrings> ASP.NET Passo a Passo Procedimento de Logon Gerenciamento de Usuários 11. Adicione dentro da TAG <system.web> um bloco de configuração de MemberShip para definir o provedor de usuários da aplicação conforme apresentado no próximo slide. ASP.NET Passo a Passo Procedimento de Logon <system.web> <compilation debug="true" targetFramework="4.0" /> <membership defaultProvider="AspNetSqlProvider" userIsOnlineTimeWindow="15"> <providers> <clear /> <add name="AspNetSqlProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="aspnetdbConnectionString" applicationName="/" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" passwordFormat="Hashed" /> </providers> </membership> </system.web> ASP.NET Passo a Passo Procedimento de Logon Gerenciamento de Usuários 12. 13. 14. Selecione a opção de menu Project/ASP.NET Configuration. Selecione a aba provedor e selecione “Selecionar um único provedor para todos os dados de gerenciamento de site” Clique no link “Teste” para verificar se o provedor está funcionando ASP.NET Passo a Passo Procedimento de Logon Gerenciamento de Usuários 15. Selecione a aba segurança e escolha “Selecionar Tipo de Autenticação”. Escolha a opção “Da Internet”. ASP.NET Passo a Passo Procedimento de Logon Gerenciamento de Usuários 16. Adicione dentro da TAG <system.web> um bloco de configuração de RoleManager para definir o provedor de funções da aplicação conforme apresentado a seguir. <system.web> ... <roleManager enabled="true" cacheRolesInCookie="true" defaultProvider="SqlRoleProvider"> <providers> <clear /> <add connectionStringName="aspnetdbConnectionString" applicationName="" name="SqlRoleProvider" type="System.Web.Security.SqlRoleProvider" /> </providers> </roleManager> </system.web> ASP.NET Passo a Passo Procedimento de Logon Gerenciamento de Usuários 17. A interface da Ferramenta de Administração de Site fica da seguinte forma: ASP.NET Passo a Passo Procedimento de Logon Gerenciamento de Usuários 18. Utilizando a opção “Criar ou Gerenciar Funções”, adicione três funções à aplicação: Administrador, JoeUser e PowerUser ASP.NET Passo a Passo Procedimento de Logon Gerenciamento de Usuários 19. 20. 21. 22. Utilizando a opção “Criar Usuários”, adicione usuários e atribua suas funções. Crie usuário para cada um das funções definidas. Após a criação das funções e usuários a interface fica conforme a figura ao lado. Após a criação dos usuários, execute a aplicação. A mensagem “Parabens, você está no nosso site” é apresentada. ASP.NET Passo a Passo Procedimento de Logon Gerenciamento de Usuários 23. 24. Acesse a ferramenta de administração de site e adicione uma regra para negar acesso a usuários anônimos, conforme apresentado na figura ao lado. A seguinte configuração é então introduzida no Web.Config <authorization> <deny users="?"/> </authorization> 25. 26. Esta configuração retira o acesso dos usuários não autenticados. Ao executar a aplicação é exibida uma tela de erro de acesso. ASP.NET Passo a Passo Procedimento de Logon Controles de Login 1. 2. 3. 4. 5. Após a inclusão da configuração, deverá ser introduzida na aplicação uma tela de login para permitir que os usuários realizem a autenticação. A pasta Login do Toolbox contem diversos componentes para elaboração de telas relacionadas a login. Crie um novo formulário na aplicação de nome Login.aspx. Arraste para a nova página um componente “Login” que se encontra na pasta Login do ToolBox. Na janela de projeto, selecione a página WebForm1.aspx e com o botão direito do mouse ative a opção “Set As Start Page”. A página passa a ser a página inicial do site. ASP.NET Passo a Passo Procedimento de Logon Controles de Login 1. Incluir um appSettings ValidationSettings:UnobtrusiveValidationMode com valor None . <appSettings> <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" /> </appSettings> ASP.NET Passo a Passo Procedimento de Logon Controles de Login 6. 7. 8. 9. 10. Execute a aplicação. A página de login irá aparecer. Informe um dos usuário e senha criados e clique no botão “Fazer Logon”. A página de entrada aparece. Digite diretamente no navegador o endereço da página de entrada, por exemplo: http://localhost:60396/WebForm1.aspx. Observe que a página de Login irá aparecer para solicitar a autenticação. A aplicação inclui automáticamente um querystring para redirecionar para a página digitada após o login. Após o login o navegador vai para página solicitada. ASP.NET Passo a Passo Procedimento de Logon Autorização de Usuários 1. 2. 3. O gerenciamento de login permite ainda que seja controlado o perfil de acesso de cada usuário, liberando seletivamente as páginas da aplicação para usuário distintos. Crie no projeto uma pasta de nome “Administrador”. Dentro da pasta, adicione um formulário de nome “WebFormAdmin.aspx”. No formulário insira um rótulo “Página para Administradores”. Repita o processo e crie pastas JoeUser e PowerUser e suas respectivas páginas de acesso com os rótulos de identificação. ASP.NET Passo a Passo Procedimento de Logon Autorização de Usuários 1. 2. 3. 4. 5. Adicione à página de entrada da aplicação (WebForm1.aspx) três hiperlinks um para cada página criada. Atribua à propriedade Text dos hiperlinks os seguintes conteúdos: “Ir para página do Administrador”, “Ir para página do usuário power” e “Ir para página do usuário Joe”. Ajuste a propriedade NavigateURL para as páginas apropriadas. Realize o login com cada um dos usuários criados e clique nos links para tentar acesso às pastas. Observe que o acesso só é permitido conforme configurado. ASP.NET Passo a Passo Procedimento de Logon Autorização de Usuários 1. 2. Acesse a ferramenta de configuração (Project/ASP.NET Configuration) e clique na opção “Criar Regras de acesso”. A figura 1 apresenta a tela de configuração. Selecione a pasta JoeUser e a função JoeUser e marque permitir. Uma nova regra de acesso é adicionada para a pasta. ASP.NET Passo a Passo Procedimento de Logon Autorização de Usuários 1. Repita o processo de configuração de regras de acesso para permitir a pasta PowerUser à função PowerUser. Negue o acesso da função JoeUser à pasta PowerUser. ASP.NET Passo a Passo Procedimento de Logon Autorização de Usuários 1. Configure regras de acesso para associar a pasta Administrador à função Administrador. Negue o acesso das funções JoeUser e PowerUser à pasta de Administrador. ASP.NET Passo a Passo Procedimento de Logon Criação de Usuários 1. 2. 3. 4. Caso se deseje incluir uma página para que o usuário crie seu login, deve-se criar uma pasta para acesso público na aplicação Adicione à aplicação uma pasta de nome “AcessoPublico”. Adicione à aplicação, nesta pasta, uma página de nome WebFormLoginCreate.aspx. Adicione a nova página um componente CreateUserWizard. Atribua à ContinueDestinationPageURL a página ”~/WebForm1.aspx”. Assim, após a execução do processo de criação, o usuário é redirecionado à página de entrada da aplicação ASP.NET Passo a Passo Procedimento de Logon Criação de Usuários 1. 2. 3. Abra a página Login.aspx. Abaixo do componente “Login” insira um componente HiperLink. Atribua à propriedade text do hiperlink o conteúdo “Criar Novo Usuário” e à propriedade NavigateURL o conteúdo “~/AcessoPublico/ WebFormLoginCreate.aspx”. Desta forma caso o usuário não tenha login ainda no sistema ele poderá configurar seu acesso. ASP.NET Passo a Passo Procedimento de Logon Criação de Usuários 1. 2. Acesse a aplicação de configuração no menu Project/ASP.NET Configuration. Observe que já existe duas regras de acesso herdadas e que não podem ser excluídas: (a) Permissão para todos, herdada do web.config do computador e (b) Negar acesso anônimo, herdada da pasta raiz da aplicação. Para sobrepor estas regras crie um arquivo web.config na pasta utilizando a opção Add / new item / Web Configuration File. ASP.NET Passo a Passo Procedimento de Logon Criação de Usuários 1. No arquivo web.config da pasta AcessoPublico inclua uma TAG <authorization> para permitir acesso a todos os usuários conforme apresentado abaixo. Acesse a aplicação de configuração para observar a nova configuração introduzida. <?xml version="1.0"?> <configuration> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </configuration> ASP.NET Passo a Passo Procedimento de Logon Criação de Usuários 1. Para definir a função do usuário, trate o evento CreatedUser do componente CreateUserWizard, incluindo o código abaixo, que define a função do usuário. protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e) { Roles.AddUserToRole(CreateUserWizard1.UserName, "JoeUser"); } ASP.NET Passo a Passo Procedimento de Logon Outros Componentes de Usuário 1. 2. 3. 4. Aba a página de entrada (WebForm1.aspx). Altere a mensagem de boas vindas para: Parabens [LoginName], você está em nosso site. Caso deseje sair, clique aqui: [LoginStatus]. Nos textos entre colchete, incluir o componente de nome indicado entre os colchetes. Execute a aplicação e observe que o componente [LoginName] apresenta o nome do usuário autenticado. Já o componente [LoginStatus] apresenta um link que permite ao usuário desconectar da aplicação e ir para a página de Login.