Boa Noite @clebiovieira, olha pra te falar a vdd, nunca usei o apache Shiro.
Na verdade você falou dele, e fui olhar um exemplo,kkkkkkkk.
Mas, se voce quer Autenticação e Autorização, você pode sim Ultilizar o Spring Security !
Sem msm precisar que todas sua aplicação seja baseada no Framework Spring.
É sem dúvida o melhor do spring security, ele é completamente desaclopado, ou seja
você pode integra-lo com outros frameworks, recomendo de verdade, até msm pela
facilidade que ele provê !
Caso não queira, você pode ultilizar o que o java ee tem por padrão, Os Realms, servidores como o
wildfly, trabalham muito bem essa parte !
A respeito do Apache Shiro, que por sinal dizem seu um projeto de primeiro nível da Apache.
Achei a documentação pobre pra ser sincero. Muito mesmo. Mas passei o dia e a madrugada de ontem fuçando fragmentos de código em uma porrada de lugar.
Consegui fazer funcionar a parte de Autenticação com Hash.
O primeiro problema é que não dá pra usar injeção de dependência e portanto, imagina instanciar um FactoryManager só para buscar um usuário no banco.
Agora vou tentar montar um esquema de autorização com as roles de usuário e por último tentar resolver o problema de performance.
Bem completo, único detalhe é que no tutorial ele replica a config de conexão no shiro e na aplicação, porém é possível criar a conexão por jndi e passar por injeção no arquivo.
Eu tenho esse tutorial no meu favoritos, alias juntei um monte de informações. rs
Infelizmente ele não mostra como se faz a parte de autorização com roles e permissions.
Estou utilizando um artigo da Java Magazine que tem um trecho de código que mostra como fazer.
O problema é que lá estão usando Spring MVC e AspecJ… Porque diabos alguém usaria Apache Shiro quando já está usando Spring? Cada um com seu cada qual.
Agora estou pensando em uma solução para que a autorização não precise ficar indo no banco toda hora para buscar as permissões do usuário.
Preciso arrumar um jeito de consultar todas as roles e permissions do usuário, logo assim que ele se autenticar pela primeira vez e salvar isso numa collection.
A parada é como passar isso para minha classe que extend AuthorizingRealm, que é responsavel tanto pela autorização quanto pela autenticação.
Li uns tópicos dizendo que as versões novas do Spring Security estão mais independentes do Spring.
Ou seja os problemas de incompatibilidades foram sanados.
Vou fazer um laboratório aqui para testar também.
PicketLink e Ommini Security também são outros que gostaria de testar mas o primeiro nem sei se roda no tomcat.
Parece que a comunidade Java no Brasil não adotou, ninguém fala sobre.