Controle de Acesso para Aplicação J2EE

Olá pessoal,

Estou desenvolvendo uma aplicação para controle de acesso, e após ler o artigo do Eduardo Guerra - Os Sete Pecados do Controle de Acesso para Aplicações Java EE (Revista Mundo Java - última edição), comecei a pensar mais sobre a arquitetura que tenho aqui, e acredito que ela não esteja se direcionando da melhor maneira.

Como sou iniciante em Java e bom, estou um tanto quanto longe de todo o aprendizado sobre Arquitetura de Sistemas, não entendo muito bem como algumas coisas são implementadas… hehe (então me desculpem se eu falar alguma baita besteira :smiley: )

Bom li alguns tópicos aqui no GUJ, sobre essa questão de Controle de Acesso as aplicações… muita gente falando sobre JAAS, LDAP… mas ainda fiquei um pouco perdida e não sei bem por onde começar… me parece que o afamorim criou um sistema de segurança e possa estar me dando alguma dica… :wink:

Gostaria de saber como vocês fazem ou fariam para implementar toda essa questão de acesso do usuário, setando permissões, perfis, etc… para ele e como funciona a montagem dos menus no sistema de acordo com essas permissões… se realmente é necessário que se cadastre no banco os módulos, os menus e telas existentes…

Aqui o que eu estava pensando em fazer seria criar uma estrutura para poder cadastrar no banco os módulos que eu tenho em meu sistema, associar aos menus que pertenceriam a ele, submenus, e telas… isso para a montagem dos menus de forma que pudesse exibir ou não os módulos/menus que meu usuário tem acesso…

Depois teria lá também o usuário, os perfis e as permissões, etc… desse usuário para poder permitir que ele acesse ou não determinadas “Operações” dos objetos, o famoso CRUD…

Huumm, seria mais ou menos isso? Ou estou muito perdida? :roll: hehe

*Perdida… hihihi :smiley:

Muito obrigada!

Olá Cris,

veja bem, como tudo na vida, para se começar alguma coisa vc deve partir do “começo” :smiley:
A primeira coisa que você deve ter em mente é “o que o seu sistema de segurança deve prover”.

Veja isso com cuidado, pois mudar um sistema de segurança, assim como qualquer outro sistema, que ja começou errado é complicado.

Escreva tudo que seu sistema de segurança precisa ter. Esse trabalho é um dos mais importantes, pois uma modelagem errada pode fazer você perder todo o trabalho.

Em cima disso faça seu DER(Diagrama de Entidades e Relacionamento)
O Diagrama de classes tambem é importante, para que você comece a viasusalizar como seu sistema irá funcionar.

Com isso pronto, procure fazer o sistema de segurança num projeto separado.
Seus projetos vão usar esse jar de maneira transparente.

Quando você for anexar o sistema de segurança, você simplesmente irá rodar o script do banco, colocar jar na sua pasta libe e pronto.

procure fazer um mapeamento aonde o uso de EJBs seja opcional, para seu sistema possa rodar tanto num tocat como num Jboss.

você terá que estudar alguns padrões de projetos, caso não os domine ainda.
mais no final você ficará impressionada com a experiência que terá acumulado.

Pode postar as dúvidas nesse tópico, no que estiver ao meu alcance vou lhe ajudar com o maior prazer.

Olá afamorim!

Muito obrigada pela sua resposta!

Bom, vou começar do começo então, pois foi justamente isso que aconteceu. Foi feita uma modelagem errada, e agora ela está tendo que sofrer mudanças para atender as reais necessidades.

Realmente é uma estrutura muito complexa (pelo menos ao meu ver), e estou bastante confusa sobre como montá-la.
Não tenho experiência com essa área de análise, modelagem, etc… e pra fechar com chave de ouro, sou iniciante em Java… hehe :smiley:
De qualquer forma estou encarando isso como um grande desafio, e acredito que vai me trazer uma experincia muito legal e um aprendizado muito grande! Acredito que isso vai ser muito bom pra começar! :smiley:

Estou usando aqui J2EE + Hibernate + Spring + JSF.
Porque meu sistema tem que ser dinâmico, parametrizável, independente e banco e bom… pode ser acessado via Internet, Extranet e Intranet.
Preciso montar uma estrutura de segurança altamente personalizada, dai várias dúvidas aparecem… :roll:

Primeiro passo acredito que seja montar essa estrutura de dados.
Ao meu ver a hierarquia de acesso do usuário é bem mais complexa que a montagem dos menus do sistema que eu preciso fazer.

Para a montagem dos menus seria algo mais simpes, tipo:

Meu sistema tem Módulos, cada um deles tem seus próprios Menus (Cadastros, Relatórios, etc…)
Dentro desses Menus, eu teria Submenus, preciso que não seja estipulado um limite para submenus, que eles sejam montados em cascata, em uma quantidade que não seja fixa. (Menu -> N Submenus -> Tela)

Depois vai entrar a parte de controlar o acesso a esses Módulos/Menus, mas acredito que para essa fase, já seja necessário que eu tenha bem estruturada a hierarquia de acesso.

Posso criar lá no banco as tabelas:
Modulo que pode ter 1 ou mais Menu
Munu que pode ter 1 ou mais Submenu
Submenu que podem ter 1 ou mais Tela

Agora como eu faço para que esse nível de Submenu não seja fixo? Relaciono Submenu com ela mesma?
Tem alguma idéia?

Já a hierarquia de acesso consiste em Usuário, Pessoa, Cargo, Setor, Unidade, Empresa… e por ai vai…
Essa parte acho que vai ser bem mais complicada de montar.

Em um primeiro momento foi usado a Acegi aqui… mas agora não sei se realmente ele vai atender as minhas necessidades. Estou dando uma olhada mais de perto na documentação dele.

Você conhece/trabalha com o Acegi?

Muito obrigada pela disposição! :smiley:

Obrigada!
[]'s

Oi Cris…

E então, o que conseguiu fazer até agora em relação ao controle de acesso que estava querendo implementar!? Tenho a mesma dúvida sua… Estou iniciando um software em JAVA, tenho um conhecimento básico e assim como você, preciso de algo flexível e independente de banco.

O que você conseguiu!?!?

Abraços.


Leandro de Oliveira
Analista de Sistemas.