Spring Boot,Keycloak和Vaadin集成问题
我一直在玩弹簧靴,并成功地在不同的项目中使用Keycloak和Vaadin。现在,我想将两者结合起来,以避免必须使用Vaadin来实现我自己的安全性。我到目前为止的结果可以在这里找到:github project。Spring Boot,Keycloak和Vaadin集成问题
我从vaadin4spring给出的shared security example开始。然后,我添加了Keycloak配置,如keycloak-spring-security-adapter和keycloak-spring-boot-adapter所示。
我现在已经在让两个人一起工作的墙上。当一切都正常运行,我浏览到localhost:8080
,我得到以下错误:
{"timestamp":...,"status":401,"error":"Unauthorized","message":"Unauthorized","path":"/"}
没有重定向被触发与Keycloak进行身份验证。但是,如果我导航到任何其他未由Vaadin管理的网址,例如localhost:8080/login
,重定向被触发。
登录成功后,我可以导航到localhost:8080
而不出错。但是,任何操作仍然受到限制,并且安全视图仍然隐藏。
任何想法如何解决我的配置?我想这是由于Vaadin处理CORS。
显然,在我的设置中,启动时系统会将用户注册为匿名,而不是尝试实际进行身份验证。
http.anonymous().disable();
添加上面的片段到安全配置防止这种情况的发生,并且系统正确地将用户重定向到KC登录。
一旦我得到了这个工作,我注意到我的观点也被打破了。这是由于影响所有bean的方法安全代理设置。 Vaadin需要实际的运行时间类而不是代理例如找到意见。
@EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true, proxyTargetClass = true)
更改proxyTargetClass
到true
确保子代理的创建避免与Vaadin任何冲突。
我将所有更改都推送到github项目。
我使用Keycloak Spring Security Adapter,并且在保护UI服务的根路径(“/”)时也遇到了一些问题。
我结束了配置Spring MVC,当用户试图访问用户界面中的根路径发送重定向:
@Bean
public WebMvcConfigurerAdapter forwardToEquipmentManager() {
return new WebMvcConfigurerAdapter() {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("redirect:/ui/home");
}
};
}
这样询问的根路径时,浏览器被重定向到主路径和它触发适配器逻辑。它只是工作。
我想这可以通过某种方式对具有某种匿名访问视图的项目(如用户注册表单)进行调整。亲切的问候;-) –
是的,如果你想这样做。我需要在默认情况下注册用户,然后才能访问应用程序。这可以改变为默认允许所有访问,然后对视图和方法进行更细粒度的访问控制。 – chvndb