Authorization & Authentication

Pessoal,

Estou em um projeto que deve utilizar: Struts, Hibernate, MySQL

Nesse projeto deve ser implementado a segurança com base em:
Usuários, Grupos, e Permissões.

Exemplo de Grupos: SystemAdmin, Admin, Moderador, Usuario

Cada Grupo tem diversas permissões e cada usuário só pertence a um Grupo apenas.

Qual seria a melhor solução utilizando essas tecnologias para que uma Action ou um JSP possa identificar se o usuário tem permissão ou não para acessar tal página?

Agradeço desde já…

Você pode criar um módulo do sistema específico para isso, atrelando o usuário a ‘n’ grupos.(É o que normalmente uso)

Outra opção, dependendo da quantidade de usuários é uma base LDAP.
Ou mesmo se for algo trivial, controla nas roles do container mesmo.

[edit]
Relendo, creio que não entendi direito. Você já tem um controle de ‘roles’ implementado? Se sim, depende da implementação para ser acessado pela Action

As Roles, os Users e Os Groups estão em Banco de Dados MySQL…

Por isso não posso usar as Roles pelo container!

E qual o problema dessas Actions consultar essa informação no banco?

Tipo…

Usuário logando no sistema, eu já vou saber de qual grupo ele é…

Para verificar nas JSPs se ele é um Admin por exemplo é simples:

<logic:present name="user" scope="session"> <logic:equal name="user" property="administrator" value="true"> ... </logic:equal> </logic:present>
Nas Action fazer o controle de roles dá para fazer… verificando se aquele group tem permissão para executar aquela action…

Agora, o problema maior é como verificar isso nas JSPs

E se você colocar na sessão as informações do usuário quando ele logar no sistema, tipo as roles que ele pertence?

Uhmn , talvez poderia ser utilizado um filter ou nao?

Acredito que não haveria problema algum, mas minha dúvida continua em saber…

Verdade!

Mas ainda questiono… é a melhor solução com a utilização de Struts, MySQL e Hibernate?

E porque não seria? :roll:

Então pessoal,

Valeu pela ajuda… agradeço!

Uma pena que você não pode usar o Mentawai Web Framework. Ele possui um sistema de autenticação e autorização exatamente como você precisa!

É… tô sabendo… já havia dado uma olha no site do Mentawai Framework

Pessoal,

Vê se vocês concordam comigo…

O WEB-INF no container não é protegido? Nele não implemento nenhuma segurança na aplicação, confere?

Supondo que minha aplicação tenha a seguinte estrutura:
/App
   |- /META-INF
   |- /WEB-INF
      |- /classes
      |- /lib
      |-/pages
            |- page1.jsp
            |- page2.jsp

Se no mapeamento das actions eu indicar meu path="/WEB-INF/pages/page1.jsp" então de forma alguma será possível acessar a página através de: http://localhost:8080/App/WEB-INF/pages/page1.jsp

Concordam? Assim dessa forma não preciso implementar a segurança de acesso nas JSPs, somente nas Actions mesmo.

Ps.: Para aqueles que desconhecem, é possível sim apontar o path das actions para dentro do WEB-INF.

Comentem por favor!

Dando up!
:roll:

Ou então crie uma tag (taglib) que faça a verificação de segurança.

Você recomenda algum livro (eBook) ou tutorial que ensine a criar taglib?

E com relação a colocar os .JPS dentro do WEB-INF e implementar a Authorization dentro das Actions seria uma boa? Não implementando dentro das .JSP…

Esse livro ensina a criar taglibs.
Head First - JSP & Servlets

Sugestao use um Filter pegue o request
adicione um parametro nele tipo “visible” e mande
seguir em frente na view voce pode fazer a checagem
com <c:if test=“request.parameter.visible”> e mostrar
ou nao o campo… seila…

E se for fazer alguma checagem no Filter mesmo voce
pode redirecionar com o response para uma pagina
estilo “Ooops You Don’t Have Permission To Do That.”

Valeu? Até… :thumbup:
[]s

Eu estou implementando através de Filtros… e o Filtro resolve meu problema!

Mas continua a minha dúvida e curiosidade…

Se eu colocar os .JSP dentro do WEB-INF eles estarão protegidos e não poderão ser acessos, a não ser seja através das Actions, confere? Assim não preciso implementar nenhum código de Authorization dentro dos .JSP
Se alguém puder me responder isso, eu estou por satisfeito!

Agradeço…

[quote=the_negao] Se eu colocar os .JSP dentro do WEB-INF eles estarão protegidos e não poderão ser acessos, a não ser seja através das Actions, confere? Assim não preciso implementar nenhum código de Authorization dentro dos .JSP
Se alguém puder me responder isso, eu estou por satisfeito![/quote]

Confere.

Marcio Kuchma