Authorization & Authentication

20 respostas
the_negao

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á…

20 Respostas

Rafael_Nunes

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

the_negao

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

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

Rafael_Nunes

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

the_negao

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

Rafael_Nunes

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

keller

Uhmn , talvez poderia ser utilizado um filter ou nao?

the_negao

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

the_negao

Verdade!

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

keller

E porque não seria? :roll:

the_negao

Então pessoal,

Valeu pela ajuda… agradeço!

Rubem_Azenha

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!

the_negao

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

the_negao

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!

the_negao

Dando up!
:roll:

danieldestro

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

the_negao

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…

keller

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

the_negao

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…

kuchma

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!

Confere.

Marcio Kuchma

danieldestro

Faça o controle de acesso via Filter. Não fique espalhando código nas Actions.
Apostila sobre Java para web que mostra como criar taglibs: http://java.danieldestro.com.br

Criado 19 de julho de 2006
Ultima resposta 24 de jul. de 2006
Respostas 20
Participantes 6