Pessoal estou tentando configurar minha aplicação para utilizar: JSF 2.2 + WELD + Spring Security 4 + Hibernate 5
No site do Spring, é dito que você pode utilizar o módulo de segurança sem precisar do módulo WebMVC ou qualquer outro módulo Spring Acoplado.
Consegui fazer a autenticação funcionar com o famoso .inMemoryAuthentication() mas é lógico que preciso
trazer essas informações de um banco de dados.
Existe uma forma de autenticar que é utilizando o .jdbcAuthentication(), para isso basta que você siga as regras
se colunas nas query e que você tenha um unico parametro chamado: username
Reparem que é necessário informar um DataSource e é ai que o problema começa.
No primeiro momento criei um Datasource no Tomcat 8 configurando o context.xml e web.xml da minha aplicação
Para fazer uso do Spring Security precisei criar duas classes basicamente, uma que habilita os filtros do spring automaticamente e outra que cuida da parte de segurança propriamente dita. Mas a frente vocês verão as classes.
Voltando ao problema
Se eu preciso de um DataSource e os contextos entre CDI e Spring são distintos, não poderei fazer isso por @Inject do CDI.
Resolvi então criar o DataSource JNDI pois achei que resolveria meu problema o que não ocorreu.
E tentei utiliza-lo na minha classe SecurityConfig assim: NÃO FUNCIONOU
Depois no desespero , resolvi criar um DriverManagerDataSource do proprio Spring
por achar que eu estava esquecendo alguma coisa relativa aos contextos. Também não funcionou.
Minha última tentativa foi tentar criar um ApplicationContext para o Spring:
Também não funcionou.
Neste exato momento estou pensando em jogar meu laptop pela janela.
E assim fica relatado meu desespero para que outros colegas tentem ajudar ou não passem por coisa parecida.
Infelizmente parei de tentar na época… Preferi utilizar o picketlink que é amplamente compatível com o JAVA EE.
Conceitualmente ambos possuem filtros, roles , grupos e etc… A única coisa bem peculiar no picketlink, é a forma como ele faz a modelagem das entidades no banco.
Se achar a solução e quiser compartilhar aqui, agradeço. Vai ajudar muita gente e com certeza irei estuda-la.