Spring Boot、Keycloak 和 Vaadin 集成问题

2024-01-11

我一直在玩 Spring Boot,并成功地在不同的项目中分别使用 Keycloak 和 Vaadin。现在,我想将两者结合起来,以避免必须使用 Vaadin 实现我自己的安全性。到目前为止我得到的结果可以在这里找到:github项目 https://github.com/chvndb/keycloak-spring-vaadin-demo.

我从共享安全示例 https://github.com/peholmst/vaadin4spring/tree/master/samples/security-sample-shared由 vaadin4spring 提供。然后我添加了 Keycloak 配置,如keycloak-spring-安全适配器 https://keycloak.gitbooks.io/documentation/securing_apps/topics/oidc/java/spring-security-adapter.htmlkeycloak-spring-boot-适配器 https://keycloak.gitbooks.io/documentation/securing_apps/topics/oidc/java/spring-boot-adapter.html.

我现在在让两者一起工作方面遇到了困难。当一切正常运行并且我导航到localhost:8080,我收到以下错误:

{“时间戳”:...,“状态”:401,“错误”:“未经授权”,“消息”:“未经授权”,“路径”:“/”}

不会触发重定向来使用 Keycloak 进行身份验证。但是,如果我导航到任何其他不受 Vaadin 管理的网址,例如localhost:8080/login,重定向被触发。

登录成功后,我可以导航到localhost:8080没有错误。但是,任何操作仍然受到限制,并且受保护的视图仍然隐藏。

有什么想法如何修复我的配置吗?我认为这是由于 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");
        }
    };
}

这样,当请求根路径时,浏览器将被重定向到主路径,并触发适配器逻辑。它就是有效的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Boot、Keycloak 和 Vaadin 集成问题 的相关文章

随机推荐