NUNCA MAIS PASSE RAIVA POR NÃO CONSEGUIR RESOLVER UM PROBLEMA COM O EXCEL - GARANTIDO!
UNIVERSIDADE DO VBA - Domine o VBA no Excel Criando Sistemas Completos - Passo a Passo - CLIQUE AQUI
« Lição anterior | Δ Página principal | ¤ Capítulos | Próxima lição » |
ASP.NET - CURSO COMPLETO Autor: Júlio Battisti |
||||||||
---|---|---|---|---|---|---|---|---|
Lição 128 - Capítulo 15 - Configurações de segurança através de programação | ||||||||
Em determinadas situações pode ser necessário detectar, no próprio código da página ASP.NET qual o nome do usuário autenticado e a quais grupos ele pertence. Uma vez sabendo o nome do usuário podemos liberar ou negar o acesso a determinados recursos. Outra aplicação prática seria a criação de conteúdos personalizados para diferentes grupos de usuários. Neste tópico apresentaremos um exemplo de conteúdo personalizado, onde diferentes colunas da tabela Clientes serão exibidas, dependendo do grupo ao qual pertence o usuário que estiver acessando a página. Os objetos e métodos que veremos neste tópico são utilizados com a autenticação do tipo Windows, a qual normalmente é utilizada em ambientes de Intranet ou Extranet. Neste caso cada usuário é cadastrado e faz o logon com a sua conta de usuário. O usuário pode pertencer a um ou mais grupos. Para maiores informações sobre a criação de usuários, criação de grupos e adição de usuários a grupos, consulte o Anexo I. Para o exemplo que apresentaremos neste capítulo utilizaremos os seguintes usuários: • GROZA\suers1 Observe que estamos trabalhando em um domínio chamado GROZA. Substitua GROZA pelo nome do domínio que você está utilizando. Também iremos considerar dois grupos: Gerentes GROZA\suser1 Funcionarios GROZA\user2 Podemos notar que o usuário suser2 pertence aos dois grupos. Acessando informações sobre o usuário autenticado. Quando utilizamos autenticação do tipo Windows (descrita no Capítulo 14), temos acesso a um objeto chamado User, o qual é acessado através da propriedade User, do objeto HttpContext A classe HttpContext contém todas as informações sobre a requisição feita pelo navegador do cliente. Uma das informações contidas na requisição é o nome do usuário, senha e domínio, para o caso da autenticação Windows. Informações estas que podem ser acessadas no código de uma página ASP.NET. A classe HttpContext pertence ao namespace System.Web. A propriedade User, da classe HttpContext retorna diversas informações de segurança sobre a requisição enviada pelo navegador do cliente. A propriedade User retorna um objeto do tipo IPrincipal, derivado da classe IPrincipal, do namespace System.Security.Principal. A principal propriedade da classe IPrincipal é a propriedade IDentity, a qual é uma instância da classe IDentity, do namespace System.Security.Principal. Através das propriedades da classe Identity é que temos acesso às informações do usuário que fez a requisição. Esta classe fornece uma série de propriedades,conforme indicado na Tabela 15.3 Na Tabela 15.3, temos uma descrição das principais propriedades da classe IDentity.
Tabela 15.3 Propriedades da classe IDentity. O tipo de objeto IDentity retornado é diferente, para os diferentes tipos de identificação. Para a autenticação Windows, o objeto retornado é do tipo WindowsIdentity, derivado da classe de mesmo nome, pertencente ao namespace System.Security.Principal. Vamos inicialmente a um exemplo simples, onde retornaremos algumas informações sobre o usuário autenticado. Antes de apresentarmos o exemplo, vamos configurar o arquivo Web.Config, para a pasta Chap15, de tal forma que esteja habilitada a autenticação do tipo Windows. Crie o arquivo Web.Config indicado na Listagem 15.8 e salve-o na pasta Chap15: Listagem 15.8 – Configurando o tipo de autenticação – Web.Config. <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.web> <authentication mode="Windows" /> <authorization> <allow roles="GROZA\Gerentes,GROZA\Funcionários" users="GROZA\suser1,GROZA\suser2,GROZA\suser3"/> <deny users="*" /> </authorization> </system.web> </configuration> Importante! Não se esqueça de configurar a pasta Chap15 como uma aplicação Web. Para maiores informações sobre como tornar uma pasta virtual em uma aplicação Web, consulte o Capítulo 13. Ao tentar acessar uma página da aplicação Web Chap15, o usuário receberá uma tela de logon conforme indicada na Figura 15.12
Se o usuário fornecer um nome de logon que não tem permissão de acesso, a tela de logon será exibida novamente. Isto é feito três vezes, após a terceira tentativa, será exibida a mensagem de erro indicada na Figura 15.13.
Se você clicar no botão Cancelar, na tela de logon, também será emitida a mensagem da Figura 15.1. Conforme configurado no nosso arquivo Web.Config, somente os usuários suser1, suser2 e suser3,do domínio GROZA e os participantes dos grupos Gerentes ou os participantes do grupo Funcionários tem permissão para acessar as páginas da aplicação Web – Chap15. Agora vamos tentar fazer o logon como um dos usuários que tem permissão de acesso. Vou utilizar o usuário suser1, o qual cadastrei com a senha: abc12345. Vou tentar acessar a página Chap15ex7.aspx, criada anteriormente. Ao acessar esta página será exibida a tela de logon. Digite as informações de logon indicadas na Figura 15.14 (senha=abc12345).
Neste caso o acesso a página será liberado sem maiores problemas. Exemplo: Agora vamos a um exemplo mais completo. Criaremos um exemplo chamado Chap15ex8.aspx. Neste exemplo utilizaremos o objeto Identity e o método IsInRole, para determinar se o usuário pertence ao grupo Gerentes ou ao grupo Funcionários. Dependendo do grupo ao qual pertencer o usuário serão exibidas diferentes versões da página. Listagem 15.8– Configurações de segurança com o código ASP.NET. <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.OleDb" %> <html> <script language="C#" runat="server"> protected void Page_Load(Object Src, EventArgs E ) { / Variáveis do tipo string que irão conter informações / sobre o usuário autenticado. string NomeDoUsuario = User.Identity.Name; string TipoDeAutenticacao = User.Identity.AuthenticationType; / Verifico se o usuário pertence ao grupo Gerentes. f (User.IsInRole("GROZA\\Gerentes")) { MostraNome.Text = "Sr. Gerente: " + NomeDoUsuario + " , seja bem vindo!"; MostraTipo.Text = "Você está autenticado usando: " + TipoDeAutenticacao; Mensagem.Text = "INFORMAÇÕES SOBRE CLIENTES!"; String DefineConexão= "PROVIDER=MICROSOFT.JET.OLEDB.4.0;" + "DATA SOURCE=c:\\meus documentos\\NorthWind.mdb"; OleDbConnection MinhaConexão = new OleDbConnection(DefineConexão); OleDbDataAdapter MeuComando = new OleDbDataAdapter("SELECT CódigoDoCliente," + "NomeDaEmpresa,País,Cidade FROM Clientes", MinhaConexão); DataSet ds = new DataSet(); MeuComando.Fill(ds); DataView source = new DataView(ds.Tables[0]); MinhaGrade.DataSource = source ; MinhaGrade.DataBind(); } else { MostraNome.Text = "Prezado Funcionário: " + NomeDoUsuario + " , seja bem vindo!"; MostraTipo.Text = "Você está autenticado usando: " + TipoDeAutenticacao; Mensagem.Text = "VOCÊ NÃO TEM PERMISSÃO PARA ACESSAR AS INFORMAÇÕES DE CLEINTES!"; } } </script> <body> <asp:Label id="MostraNome" Text="" Font-Bold="True" BackColor="#c0c0c0" runat="server" /> <BR> <asp:Label id="MostraTipo" Text="" Font-Bold="True" BackColor="#000000" ForeColor="#ffffff" runat="server" /> <BR> <asp:Label id="Mensagem" Text="" Font-Bold="True" BackColor="#c0c0c0" runat="server" /> <HR> <ASP:DataGrid id="MinhaGrade" runat="server" Width="500" BackColor="#ccccff" BorderColor="black" ShowFooter="false" CellPadding=3 CellSpacing="0" Font-Name="Verdana" Font-Size="8pt" HeaderStyle-BackColor="#aaaadd" MaintainState="false" /> </body> </html> Digite o código da Listagem 15.8 e salve o mesmo em um arquivo chamado chap15ex8.aspx, na pasta chap15, dentro da pasta wwwroot, conforme descrito no item: “Check List para acompanhar os exemplos deste livro”, no Capítulo 6. Para acessar esta página utilize o seguinte endereço: http://localhost/chap12/chap15ex8.aspx Quando for solicitada a tela de logon faça o logon com as seguintes informações: Nome do usuário : suser2 Como o usuário suser2 faz parte do grupo Gerentes, você obterá os resultados indicados na Figura 15.15.
Para garantir que a página de logon seja solicitada novamente, feche o navegador, faça o logof do sistema operacional (Iniciar -> Desligar -> Efetuar o logoff de...). Faça o logon como administrador e acesse a página Chap15ex8.aspx. Na tela de logon digite as seguintes informações: Nome do usuário : suser3 Como o usuário suser3 não pertence ao grupo Gerentes, você obterá os resultados indicados na Figura 15.16.
Observe que para obter as informações sobre o cliente autenticado e o tipo de autenticação, simplesmente utilizamos propriedades do objeto User.Identity: string NomeDoUsuario = User.Identity.Name; string TipoDeAutenticacao = User.Identity.AuthenticationType; Para determinar se o usuário pertence ou não ao grupo de gerentes, utilizamos o método IsInRole, para o qual passamos, como parâmetro, o nome do grupo, no formato: DOMÍNIO\NomeDoGrupo: if (User.IsInRole("GROZA\\Gerentes")) O restante do código dispensa maiores comentários. |
||||||||
« Lição anterior | Δ Página principal | ¤ Capítulos | Próxima lição » |
Contato: Telefone: (51) 3717-3796 | E-mail: webmaster@juliobattisti.com.br | Whatsapp: (51) 99627-3434
Júlio Battisti Livros e Cursos Ltda | CNPJ: 08.916.484/0001-25 | Rua Vereador Ivo Cláudio Weigel, 537 - Universitário, Santa Cruz do Sul/RS, CEP: 96816-208
Todos os direitos reservados, Júlio Battisti 2001-2024 ®
LIVRO: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2016 - CURSO COMPLETO E PRÁTICO
DOMINE A PROGRAMAÇÃO VBA NO EXCEL - 878 PÁGINAS - CLIQUE AQUI