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

Você está em: PrincipalArtigosASP.NET › Capítulo 15 : 09
Quer receber novidades e e-books gratuitos?
« 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
• GROZA\suers2
• GROZA\suers2

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
                                   GROZA\suser2

Funcionarios               GROZA\user2
                                   GROZA\user3

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.

Propriedade Descrição
AuthenticationType Retorna o tipo de autenticação
IsAuthenticated Retorna true se o usuário foi autenticado com sucesso e
false caso contrário.
Name Retorna o nome do usuário autenticado.

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

Curso Completo de ASP.NET - Júlio Battisti
Figura 15.12 Tela de logon – autenticação do tipo Windows habilitada no arquivo Web.Config.

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.

Curso Completo de ASP.NET - Júlio Battisti
Figura 15.13 Três tentativas de logon sem sucesso.

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).

Curso Completo de ASP.NET - Júlio Battisti
Figura 15.14 Usuário com permissões de acesso.

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
Senha                          :           abc12345
Domínio                      :           GROZA

Como o usuário suser2 faz parte do grupo Gerentes, você obterá os resultados indicados na Figura 15.15.

Curso Completo de ASP.NET - Júlio Battisti
Figura 15.15 Usuário suser2, pertencente ao grupo Gerentes.

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
Senha                          :           abc12345
Domínio                      :           GROZA

Como o usuário suser3 não pertence ao grupo Gerentes, você obterá os resultados indicados na Figura 15.16.

Curso Completo de ASP.NET - Júlio Battisti
Figura 15.16 Usuário suser3, não pertence ao grupo Gerentes.

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 »
Quer receber novidades e e-books gratuitos?

 
 

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