-
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
libdo conector MySQL; - Rodar o script do banco de dados MySQL (user: root, senha: fiap);
- Importar projetos no eclipse;
- Exportar projeto
AvaliacaoJAASDatabaseCustomcomoJARpara o diretóriodeploydo JBoss; - Rodar aplicação
AvaliacaoJAASno 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
Português
English
Español
Français
Deutsch
Italiano
Pусский
日本語
中文
עברית
العربية
Ελληνικά
Esperanto