[RESOLVIDO] Como controlar as funções do sistema

8 respostas
max.analista

Boa tarde meu povo.
A ultima tarefa recebida em meu serviço foi no quesito de segurança.
Tenho que realizar um controle das funções do sistema de acordo com cada usuário.

Por exemplo:

Tenho um sistema web contabil que estará disponivel para várias entidades.
Cada entidade, para acessar o sistema, deve fornecer duas identificações. A primeira identificação é o login e senha da entidade(Ex: Prefeitura Municipal de Java) e a segunda identificação é informar o banco de dados que deseja conectar(selecionar em um combobox) e o usuario e senha pessoal(Pessoa física que está acessando o sistema. Ex: usuario: Max / senha:123).

O problema é:

Alguns usuário terão a permissão de somente Ler, outros de Ler e Salvar e outros de somente imprimir relatórios dentro as diversas páginas do sistema.

Como fazer este controle?

8 Respostas

fabiomedeirosf

Não sei quais tecnologias está usando, na especificação JEE existe o JAAS, bastante bom e eficiente.

Há também, o SpringSecurity, tão bom quanto, e abstrai relativa complexidade se comparado a implementação do JAAS. Acho que vale a pena dar uma olhada.

max.analista

fabiomedeirosf:
Não sei quais tecnologias está usando, na especificação JEE existe o JAAS, bastante bom e eficiente.

Há também, o SpringSecurity, tão bom quanto, e abstrai relativa complexidade se comparado a implementação do JAAS. Acho que vale a pena dar uma olhada.

Olá fabiomedeirosf,
Estou utilizando JSF. Andei estudando o Spring Security no entando, os exemplo que vi até então foram para segurança de acesso a página. Você teria algum link ou tutorial que poderia me indicar para começar este aprendizado e passar a implementar uma solução?

fabiomedeirosf

Com o SpringSecurity, vc consegue tanto restringir o acesso a uma página, ou a elementos específicos dela, usando renderização condicional por perfil.

Além da restrição de acesso a página, a exibição de componentes, pode-se faze-la a nível de método no sistema, existe uma anotação que determina isto: @Secured(“roles”).

Eu tenho um modesto blog(listado na minha assinatua) que tento manter sobre as tecnologias java, infelizmente, ainda não abordei sobre o security especificamente, mas em breve, mas estes vão te ajudar certamente:
http://static.springsource.org/spring-security/site/petclinic-tutorial.html
http://www.mkyong.com/tutorials/spring-security-tutorials/

Bom trabalho!

max.analista

fabiomedeirosf:
Com o SpringSecurity, vc consegue tanto restringir o acesso a uma página, ou a elementos específicos dela, usando renderização condicional por perfil.

Além da restrição de acesso a página, a exibição de componentes, pode-se faze-la a nível de método no sistema, existe uma anotação que determina isto: @Secured(“roles”).

Eu tenho um modesto blog(listado na minha assinatua) que tento manter sobre as tecnologias java, infelizmente, ainda não abordei sobre o security especificamente, mas em breve, mas estes vão te ajudar certamente:
http://static.springsource.org/spring-security/site/petclinic-tutorial.html
http://www.mkyong.com/tutorials/spring-security-tutorials/

Bom trabalho!

Muito grato por compartilhar o conhecimento fabiomedeirosf.
Estarei dando início aos estudos e quaisquer dúvida retorno a este tópico.
Também estarei presente em seu blog a busca de novos saberes.

Desde já meu muito obrigado.

Se mais alguém poder postar links, sugestões, ensinamentos… ficarei grato e trarei um feedback a respeito do conteúdo.

Abraço.

max.analista

Olá pessoal,

Bom, a partir das dicas acima, realizei mais algumas pesquisas e achei um link muito interessante.

:arrow: http://www.javasimples.com.br/spring-2/spring-security-3-deixando-sua-aplicacao-web-segura :thumbup:

Este tópico é de autoria do Felipe Saab. Que por sinal, um dos melhores autores na área do ensino na web.

Para quem está com a mesma dificuldade que eu, o link servirá de grande ajuda. Agora vou a implementação. Dou noticias nesta semana.

Aguardo contribuições ainda pessoal :smiley:

max.analista

Novamente aqui estou.
Bem, a duvida agora parece ser mais simples de se resolver.

No momento atual já consegui gravar o usuário logado na sessão, consigo ter controle sobre o formulario e sobre as funcionalidades de gravar, imprimir e excluir.
Também tenho meu banco de dados onde estão salvo as informações de cada usuario com seu respectivo acesso.

A questão é:

Aonde devo implantar a segurança?
Por exemplo, como estou fazendo a segurança pelo bean, um usuario que tente acessar uma página que nao tem acesso, poderia verificar isso com os métodos que já possuo e retornar um boolean “false” e fazer referencia no atributo rendered na tag <h:form>.

Desenhando:

Usuario acessa pagina teste.

Com meus métodos, eu verifico o usuário logado e a página que ele quer acessar, faço uma consulta no banco e vejo suas permissoes.

O usuario nao tem permissao de acessar a pagina teste. Então, meu método(permissaoForm) retorna o valor FALSE.

Na minha página teste, colocaria assim:

<h:form rendered="#{bMeuBean.permissaoForm}">

...

</h:form>

Esse é o meu primeiro pensamento. De outra forma, pensei em fazer o controle no faces-config.xml.

Enfim, qual a melhor solução?

V

Cara, você poderia postar o codigo ?

max.analista

Consegui resolver o problema acima com a solução que eu mesmo postei acima, utilizando rendered.

Criado 14 de março de 2012
Ultima resposta 20 de mar. de 2012
Respostas 8
Participantes 3