我一直在使用 Spring Boot,并成功地在不同的项目中分别使用 Keycloak 和 Vaadin。现在,我想将两者结合起来,以避免必须使用 Vaadin 实现我自己的安全性。到目前为止我得到的结果可以在这里找到:github project .
我从shared security example开始由 vaadin4spring 提供。然后我添加了 Keycloak 配置,如 keycloak-spring-security-adapter 给出的。和 keycloak-spring-boot-adapter .
我现在在让两者一起工作时遇到了困难。当一切正常运行并且我导航到 localhost:8080 时,我收到以下错误:
{"timestamp":...,"status":401,"error":"Unauthorized","message":"Unauthorized","path":"/"}
不会触发重定向来使用 Keycloak 进行身份验证。但是,如果我导航到任何其他不受 Vaadin 管理的 url,例如localhost:8080/login
,触发重定向。
成功登录后,我可以导航到 localhost:8080
而不会出现错误。但是,任何操作仍然受到限制,并且 protected View 仍然隐藏。
有什么想法可以修复我的配置吗?我认为这是由于 Vaadin 处理 CORS 造成的。
最佳答案
我使用 Keycloak Spring 安全适配器,并且在保护 UI 服务的根路径(“/”)时也遇到了一些问题。
我最终将 Spring MVC 配置为在用户尝试访问 UI 中的根路径时发送重定向:
@Bean
public WebMvcConfigurerAdapter forwardToEquipmentManager() {
return new WebMvcConfigurerAdapter() {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("redirect:/ui/home");
}
};
}
这样,浏览器在询问根路径时会被重定向到主路径,并触发适配器逻辑。它确实有效。
关于spring-boot - Spring Boot、Keycloak 和 Vaadin 集成问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43652686/