Integración de Spring Security 4 y JSF 2
¿Hay alguna manera de integrar Spring Security 4 (principalmente para administrar los niveles de acceso de los usuarios y a qué vistas pueden acceder) y JSF 2?
encontréesta linda cosa lo que le permite mezclar Spring Boot y JSF 2 con PrimeFaces 5. Excelente material. Quiero ver si puedes subirlo a otro nivel.
Normalmente configuraría Spring Security para Spring MVC así:
WebSecurityConfig.java
@Configuration
@EnableWebMvcSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/", "/home").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
.permitAll();
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("Zyst").password("password").roles("USER");
}
}
Y luego, hasta donde yo sé, corríjame si me equivoco, mire en su MvcConfig para ver qué significa realmente "/ home" y similares:
MvcConfig.java
@Configuration
public class MvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/home").setViewName("home");
registry.addViewController("/").setViewName("home");
registry.addViewController("/hello").setViewName("hello");
registry.addViewController("/login").setViewName("login");
}
}
Sin embargo, he estado buscando en Google durante unas horas y realmente no puedo encontrar una respuesta concluyente sobre cómo configurar Spring Security para JSF. ¿Puede implementar su front-end usando JSF y luego hacer que sea administrado por Spring Security, por lo que, por ejemplo, los enlaces, es decir: localhost: 8080 / home en lugar de localhost: 8080 / home.xhtml, se administran y sirven correctamente? Y para que los niveles de usuario definidos enWebSecurityConfig.java
solo pueden acceder a páginas relevantes para ellos mismos.
Por lo que he investigado (brevemente), podría no ser posible debido a que Faces y Mvc son tecnologías diferentes que no funcionan especialmente bien juntas. Sin embargo, si es posible, me gustaría asegurarme de si es posible o no.
Y si ES posible, ¿puede proporcionar un ejemplo de trabajo o un enlace a algún lugar que profundice más? Hice google bastante pero es 100% posible que termine perdiendo algo.
Todas y cada una de las respuestas son muy apreciadas.