Artigo do tipo Tutorial
Recursos especiais neste artigo:
Artigo no estilo Curso Online
Criando aplicações web seguras – Parte 2
Neste segundo artigo da série sobre como criar aplicações web seguras, daremos continuidade ao desenvolvimento da aplicação Acadêmico Seguro, demonstrando a criação do formulário de login e as configurações necessárias para sua integração com a API JAAS. Será analisado também como utilizar recursos de criptografia para codificar as senhas dos usuários a fim de armazená-las em segurança, e por fim, demonstraremos as configurações para que a aplicação possa ser executada por meio de conexões seguras com HTTPS e certificados digitais.

Em que situação o tema é útil
O tema abordado tem grande importância para o desenvolvimento de aplicações corporativas, pois além de expor alguns conceitos teóricos sobre segurança, apresentamos um exemplo prático com o objetivo de despertar o interesse pelo assunto. Neste artigo, ao analisarmos questões como criptografia e navegação por conexões seguras, visamos demonstrar como esses recursos podem incrementar a segurança das aplicações que desenvolvemos.

Na primeira parte desta série de artigos com o tema “Criando aplicações web seguras”, foram relatados os conceitos sobre segurança e sua importância para as aplicações corporativas. Além disso, iniciamos o desenvolvimento de uma aplicação web com o intuito de desfrutá-la como laboratório para expor na prática os conceitos apresentados. Criamos, assim, todo o ambiente necessário para montar a aplicação, desde o banco de dados até a criação do projeto no Eclipse.

Com o ambiente de desenvolvimento criado, analisamos os conceitos de autenticação e autorização e em nossa aplicação empregamos essas definições por meio da API JAAS presente no Java. Para isso, configuramos o domínio de segurança do sistema no servidor GlassFish e definimos as roles que serão aplicadas para estabelecer as permissões de acesso às funcionalidades da aplicação.

Nesta segunda e última parte da série, vamos criar o formulário de login para que os usuários possam informar suas credenciais, nome de usuário e senha, para autenticar no sistema. Vamos analisar também os conceitos de criptografia e algoritmos hash e introduziremos esses recursos na aplicação para que as senhas dos usuários sejam codificadas com o objetivo de armazená-las com segurança no banco de dados.

Por fim, serão demonstradas as configurações necessárias, tanto em nível de servidor quanto em nível de aplicação, para que a aplicação desenvolvida, ao longo desses dois artigos, seja acessada por meio de conexões seguras através do protocolo HTTPS e certificados digitais.

Autenticação de usuários com formulário de login

Para que o usuário consiga se autenticar no sistema, a aplicação deve fornecer um formulário de login no qual o usuário possa informar suas credenciais de acesso. No entanto, para criarmos esse formulário, se faz necessário que já tenhamos configurado o domínio de segurança do JAAS no servidor de aplicação, os papéis/roles relacionados com os grupos de usuários e definidos as regras de autorização para acesso às telas da aplicação. Todas essas configurações foram realizadas na primeira parte dessa série de artigos.

Com essas configurações realizadas, podemos criar o formulário de login. Este formulário será apresentado no navegador toda vez que um usuário tentar acessar a aplicação sem ter informado primeiramente seu nome de usuário e senha corretos.

Basicamente, ele conterá dois campos que receberão o nome do usuário e a senha. O seu código é apresentado na Listagem 1. Nesta listagem aparecem em destaque os elementos utilizados pelo JAAS para executar a autenticação dos usuários. São eles: os campos username e password; e o botão <h:commandButton>, o qual executa a chamada ao método login() do ManagedBean LoginBean responsável pela lógica de autenticação do usuário.

Esse estilo de autenticação é conhecido como autenticação programática, pois estamos chamando um método de uma classe que irá se responsabilizar por garantir a autenticidade do usuário e realizar a autenticação no domínio de segurança do JAAS.

Listagem 1. Código da página login.xhtml utilizada para realizar a autenticação dos usuários.


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml" 
        xmlns:h="http://java.sun.com/jsf/html" 
        xmlns:f="http://java.sun.com/jsf/core"
        xmlns:ui="http://java.sun.com/jsf/facelets"
        xmlns:p="http://primefaces.org/ui">
   
        <h:head>
         <title>Academico Seguro</title>
          <meta http-equiv="content-type" content="text/xhtml; charset=UTF-8" />
        </h:head>
   
        <body>
         <h:form>
          <p:panel header="Faça o Login para Entrar no Sistema"
            style="width: 400px; margin: auto;">
           <h:panelGrid columns="2" >
              <h:outputLabel value="Nome Usuário:" />            
             <h:inputText id="username" value="#{loginBean.userName}"  />
              <h:outputLabel value="Senha:  " />            
             <h:inputSecret id="password" value="#{loginBean.password}" />
              <h:outputText value="" />
              <h:commandButton action="#{loginBean.login}" value="Login"/>           
              </h:panelGrid>
          </p:panel>        
        </h:form>
      </body>
  </html> ... 

Quer ler esse conteúdo completo? Tenha acesso completo