spring-boot - Spring Boot、Keycloak 和 Vaadin 集成问题

标签 spring-boot vaadin keycloak vaadin4spring

我一直在使用 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/

相关文章:

java - 瓦丁 : is it possible to build for production a vaadin application without NodeJS?

java - 无法在 Eclipse 中使用 Vaadin 创建 Maven 应用程序

keycloak - 在 keycloak 管理控制台 19.0.2 中启用国际化

ruby-on-rails - 使用 Keycloak 实现单点登录

java - Vaadin 7 从客户端向服务器发送数据

java - 通过keycloak管理客户端在keycloak中创建用户返回IllegalArgumentException

spring-boot - Spring boot 2 和 ReadinessProbe/LivenessProbe

java - 生成具有自动增量的 String 类型的长数字 id

mysql - 使用 AngularJS 和 Spring Security 进行身份验证

java - 将 HTML 输入日期映射到 Java 对象的 LocalDate