Segurança (Controle de acesso por usuário) - JSF

E ae galera,

Estou construindo aqui controle de acesso em minha aplicação. Depois de uma boa pesquisada, vi que por questão de segurança muitos utilizam esse controle que o nosso amigo hebert construiu. Eu particulamente gostei, testei o projeto e estou aproveitando muitas coisas.

Eu tenho alguma experiência com aplicações desktop, o esquema que utilizávamos era diferente, a nível de banco de dados. Ou seja, o controle de acesso por usuário era feito no banco. Dessa maneira no exemplo do hebert, temos 2 tipos de acesso USER ou ADMIN, alguém dispõe alguma ideia de como daria para adaptar eles e controlar acesso individualmente para cada usuário?

Digo isso pois na WEB tem toda aquela questão de segurança, onde o cara pode acessar as páginas direto pelo browser.

Agradeço por enquanto.

Posso estar falando besteira, mas a meu ver não faz muito sentido tem roles por usuário no banco quando se fala de uma aplicação web.
Numa aplicação desktop é interessante porque o client tem acesso direto via jdbc/odbc ao server. Então com um usuário e senha comum, pode-se logar por um “pgadmin” da via e executar querys sem permissão.
Numa aplicação web o usuário não tem acesso ao servidor de banco de dados. Somente o containter, então não corre o mesmo risco da aplicação desktop.
Além do mais, numa aplicação web normalmente você usa pool de conexões, como o c3p0. Os pools se conectam com o mesmo usuário ao banco.
Você poderia usar JAAS ou desenvolver o seu próprio controle de páginas usando um filter por exemplo.

Espero ter contribuído,

sds

[quote=cgraf]Posso estar falando besteira, mas a meu ver não faz muito sentido tem roles por usuário no banco quando se fala de uma aplicação web.
Numa aplicação desktop é interessante porque o client tem acesso direto via jdbc/odbc ao server. Então com um usuário e senha comum, pode-se logar por um “pgadmin” da via e executar querys sem permissão.
Numa aplicação web o usuário não tem acesso ao servidor de banco de dados. Somente o containter, então não corre o mesmo risco da aplicação desktop.
Além do mais, numa aplicação web normalmente você usa pool de conexões, como o c3p0. Os pools se conectam com o mesmo usuário ao banco.
Você poderia usar JAAS ou desenvolver o seu próprio controle de páginas usando um filter por exemplo.

Espero ter contribuído,

sds[/quote]

E ae cgraf. Com certeza você contribuiu. É exatamente nesse ponto que quero chegar, realmente está parecendo não ser muito viável fazer controle de acessos individuais, talvez seja mais interessante trabalhar com regras mesmo, ADMIN, OPERADOR, etc. Eu dei uma olhada nessas duas maneiras que você comentou, a primeira delas JAAS me chamou muito atenção, só que pelo que entendi ela depende do JBoss, não é? A segunda também me parece interessante, só que só encontro exemplos e materiais um pouco antigo.

O que eu preciso é algo bem simples:

  • Usuário Administrador tem acesso as páginas x,y e z;
  • Usuário Operador tem acesso a página Z;

Ainda estou pegando alguns macetes, mas pelo que parece utiliza-se também o faces-config.xml para implementar esse controle, certo?
Estou utilizando as versões mais atuais de Spring, Hibernate, JSF, etc. Ele não tem o faces-config.xml, coloco então no web.xml?

JAAS não é exclusividade do JBoss, por exemplo aqui no guj achei este post http://www.guj.com.br/java/221130-jaas-com-glassfish-v3-

Como você usa Spring, pesquise por Spring Security. Por exemplo tem um post que pode te ajudar aqui http://pobrecomputeiro.wordpress.com/2012/04/22/a-simplicidade-do-spring-security/

sds

Opa cgraf,
Muito obrigado por esses dois direcionamentos, vou dar uma estudada melhor neles.

[quote=cgraf]JAAS não é exclusividade do JBoss, por exemplo aqui no guj achei este post http://www.guj.com.br/java/221130-jaas-com-glassfish-v3-

Como você usa Spring, pesquise por Spring Security. Por exemplo tem um post que pode te ajudar aqui http://pobrecomputeiro.wordpress.com/2012/04/22/a-simplicidade-do-spring-security/

sds[/quote]