-
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:
- Cadastrar funcionário;
- Promover funcionário para gerente;
- 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 comoJAR
.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
comoJAR
para o diretóriodeploy
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