Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Segurança em Aplicação Web, com JAAS

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Dica Segurança em Aplicação Web, com JAAS

    Tava lendo um artigo na net, e achei que poderia ser interessante pra quem quer dar uma estudada e analisar o sistema que o carinha fez, até mesmo pra descobrir falhas e invadir.

    ---

    Trabalho da Disciplina: Segurança SOA
    Prof. Fabio Sakamoto

    MBA em Desenvolvimento de Aplicações Java - SOA / FIAP
    22/04/2012

    Robson de Sousa Martins


    ---

    Download do código-fonte:

    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... (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 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:




    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:
    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
    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
X
Working...
X