• Java

    Java

    Segurança em Aplicação Web (JAAS)

Trabalho da Disciplina: Segurança SOA

Robson Martins
Prof. Fabio Sakamoto
MBA em Desenvolvimento de Aplicações Java - SOA / FIAP
22/04/2012

 

Download do código-fonte:

Segurança em Aplicação Web, com JAAS (ZIP ~1,9MB)

 

Tecnologias empregadas:
  • JAAS;
  • Hash Criptográfico;
  • JBoss;
  • PrimeFaces/JSF;
  • JPA;
  • Banco de Dados MySQL.

 

Enunciado:

Criar um projeto web utilizando a segurança provida pelo JAAS para validar usuário e senha (criptografada), para a execução das seguintes funcionalidades:

  1. Cadastrar funcionário;
  2. Promover funcionário para gerente;
  3. Logout de usuário.

Este projeto deve ter os perfis de acesso:

  • funcionário;
  • gerente.

Sendo que:

  • A funcionalidade (1) seja acessada pelo funcionário e gerente.
  • A funcionalidade (2) seja acessada apenas pelo gerente.

A autenticação e a autorização devem ser feitos por uma classe que implemente uma segurança customizada com criptografia.

 

Arquivos do Pacote ZIP:
  • AvaliacaoJAAS.war: Projeto Java Web para o Eclipse, implementando a segurança com JAAS. Deve rodar num Server JBoss 6.1 corretamente configurado.
  • AvaliacaoJAAS_DatabaseCustom.zip: Projeto Java para o Eclipse, contendo a implementação da classe de segurança customizada. Deve ser feito o deploy dessa classe para o JBoss como JAR.
  • AvaliacaoJAAS.sql: Script para criar o schema e as tabelas no banco de dados MySQL.
  • JBossServerConfig.zip: Contém os arquivos de configuração necessários para o JBoss 6.1.

 

Detalhes sobre a Implementação:
Banco de Dados:

MySQL
Schema: seguranca
User: root / Senha: fiap

Configurado no arquivo seguranca-ds.xml (deve ir dentro do JBoss, no subdiretório deploy).

O Script do banco de dados já carrega uma base inicial, que contém os seguintes usuários fictícios:

Username Senha Nome Completo Cargo
fsakamoto fsakamoto Fabio Sakamoto Gerente
eendo eendo Eduardo Endo Gerente
rmartins rmartins Robson de Sousa Martins Funcionário
aromano aromano Adriana Del Nero Romano Funcionário
cgoulart cgoulart Christiny Belini Goulart Funcionário

 

A persistência dos dados é realizada via JPA.

Na classe GenericDAO, existe um atributo 'debugInfo', que pode ser alterado para true para imprimir no console as informações de debug (default = true).

 

Segurança JAAS:

A segurança JAAS é configurada no JBoss através do arquivo login-config.xml (deve ir dentro do JBoss, no subdiretório conf).

A classe contida no Projeto AvaliacaoJAAS_DatabaseCustom.zip, implementa uma segurança customizada em Banco de Dados com criptografia (hash) de senhas. Essa classe é a SegurancaDatabaseCustom.

Ela foi implementada a partir da classe DatabaseServerLoginModule, que já possui tudo o que é necessário para o acesso ao banco de dados pelo JAAS, simplificando o desenvolvimento.

As tabelas no banco de dados também possuem uma estrutura customizada nesse exercício.

Há duas tabelas, a user e a role, que representam, respectivamente, uma lista de usuários e uma lista de possíveis roles (papéis).

 

Interface Web com o Usuário:

A aplicação Web foi desenvolvida com o uso de Primefaces e JSF, e a segurança JAAS foi configurada sobre essa aplicação.

Há duas páginas principais:

cadastrar.jsf: Exibe o cadastro de usuários.

As permissões dessa página são:

Funcionário: pode alterar cadastro de funcionários, adicionar funcionários, remover funcionários.
Gerente: pode alterar cadastro de funcionários e gerentes, adicionar funcionários, remover funcionários e gerentes.

promover.jsf: Exibe a tela de promoção de funcionários para gerentes.

Somente um gerente pode acessar essa página.

Para ambos os papéis (funcionário e gerente) é possível realizar logout (sair da aplicação) e alterar a sua própria senha.

 

Detalhes de Uso:
  • Configurar JBoss com os arquivos XML e a lib do conector MySQL;
  • Rodar o script do banco de dados MySQL (user: root, senha: fiap);
  • Importar projetos no eclipse;
  • Exportar projeto AvaliacaoJAASDatabaseCustom como JAR para o diretório deploy do JBoss;
  • Rodar aplicação AvaliacaoJAAS no servidor JBoss;
  • Acessar as páginas:
    http://localhost:8080/AvaliacaoJAAS/cadastrar.jsf
    http://localhost:8080/AvaliacaoJAAS/promover.jsf
    e efetuar login com um dos usuários presentes na base de dados.

 

Versões das ferramentas e bibliotecas utilizadas:
  • Eclipse 3.6
  • Java JDK 1.6
  • Primefaces 3.2
  • JBoss 6.1
  • MySQL 5.5