【发布时间】:2020-08-29 10:21:22
【问题描述】:
我有一个使用 Vaadin 8 构建的“旧版”应用程序,我需要使用 Keycloak 来保护它。 不幸的是,甚至没有触发到 Keycloak 的重定向。
作为测试,我创建了一个 Spring Boot 应用程序并尝试使用 Keycloak 对其进行保护,但没有任何问题,但它无法使用 Vaadin 8。
我的 Spring Boot 应用程序的配置文件是;
application.properties
keycloak.realm=myrealm
keycloak.resource=test-app
keycloak.auth-server-url=http://localhost:8080/auth
keycloak.ssl-required=external
keycloak.public-client=true
keycloak.securityConstraints[0].authRoles[0]=Patient
keycloak.securityConstraints[0].authRoles[1]=Admin
keycloak.securityConstraints[0].securityCollections[0].name=boeken
keycloak.securityConstraints[0].securityCollections[0].patterns[0]=/books
keycloak.securityConstraints[1].authRoles[0]=Admin
keycloak.securityConstraints[1].securityCollections[0].name=backend
keycloak.securityConstraints[1].securityCollections[0].patterns[0]=/manager
server.port=8090
KeycloakConfig 类
@Configuration
public class KeycloakConfig {
@Bean
public KeycloakSpringBootConfigResolver keycloakConfigResolver() {
return new KeycloakSpringBootConfigResolver();
}
}
只要加上这个,Keycoal-redirect就会被触发,我就可以登录了。很简单。
当我尝试保护 Vaadin 8 应用程序时,我应该更改/添加什么? 它不是 Spring/Spring 启动应用程序(不是由 SpringApplication.run() 启动的),我不认为必须有一个 Spring/Spring 启动应用程序才能使用 Keycloak 保护它(如果我错了,请纠正我)。 问题似乎是 application.properties 文件被忽略(尽管它位于类路径上),因为我可以导航到应该保护的 url。
有没有人看到遗漏/错误的地方?
【问题讨论】:
-
你试过什么?显然你不能在没有 Spring 的情况下使用
@Configuration或@Bean。application.properties也是 Spring 特有的,所以你也不能使用它。 -
我几乎尝试了所有方法;添加了 Tomcat 适配器,关注了几十个 SO-topics,关注了使用 Vaadin 10 和 Spring 添加 Keycloak 的教程,......看起来 Spring 是必要的,但是将我的项目更改为 Spring(boot) 项目似乎很麻烦只是添加Keycloak....也许有人对 Vaadin 8 和 Keycloak 有经验,可以将我推向正确的方向。
-
为什么把项目改成Spring boot会很麻烦?没有这个工作将非常困难。 Vaadin 和 Keycloak 具有用于确保正确集成的 Spring 安全性插件/适配器。
标签: java spring vaadin keycloak vaadin8