Spring Boot 3.1下与Keycloak集成方案
2023-02-11 23:57:33
在 Spring Boot 3.1 中拥抱无适配器的 Keycloak 集成
导言
Spring Boot 与 Keycloak 的无缝集成已成为往事。2 月 14 日,Keycloak 宣布弃用其 Spring Security 和 Spring Boot 适配器,迫使开发人员寻找替代方案。虽然这一消息可能会让人不安,但仍然有办法在 Spring Boot 3.1 中与 Keycloak 建立牢固的联系。
依赖注入
第一步是将 Keycloak 依赖项引入您的 pom.xml 文件:
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-spring-boot-starter</artifactId>
<version>17.0.1</version>
</dependency>
Keycloak 配置
现在,在 Keycloak 管理控制台中,创建一个名为“spring-boot-app”的新客户端:
- 客户端协议: OpenID Connect
- 根 URL: http://localhost:8080
Spring Boot 配置
在 Spring Boot 应用程序中,通过在 application.properties 文件中添加以下配置,连接 Keycloak:
keycloak.realm=spring-boot-realm
keycloak.auth-server-url=http://localhost:8180/auth
keycloak.ssl-required=none
下一步,在您的 Spring Boot 应用程序中添加以下代码:
@SpringBootApplication
public class SpringBootApp {
public static void main(String[] args) {
SpringApplication.run(SpringBootApp.class, args);
}
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/", "/error").permitAll()
.anyRequest().authenticated()
.and()
.oauth2Login();
}
}
}
运行和测试
使用 mvn spring-boot:run 命令启动应用程序。在浏览器中导航到 http://localhost:8080,您应该会看到 Keycloak 登录页面。输入您的凭据并单击“登录”以访问 Spring Boot 应用程序的主页。
结论
尽管 Keycloak 适配器的弃用可能会让人望而生畏,但通过遵循本指南,您可以轻松地在 Spring Boot 3.1 中与 Keycloak 建立无缝连接。这种方法将使您能够继续利用 Keycloak 的强大安全功能,同时拥抱最新版本的 Spring Boot。
常见问题解答
-
这个过程是否适用于其他 Spring 版本?
不,本指南专门针对 Spring Boot 3.1。
-
我可以在哪里找到 Keycloak 管理控制台?
Keycloak 管理控制台可在 http://localhost:8180/auth/admin/ 控制台访问。
-
我如何配置 SSL 连接?
在 application.properties 文件中设置 keycloak.ssl-required 为 all。
-
为什么我收到“OAuth2AuthenticationProcessingFilter 尚未配置”错误?
确保您已在 Spring Security 配置中包含 oauth2Login() 方法。
-
我可以自定义 Keycloak 登录页面吗?
是的,您可以通过 Keycloak 管理控制台的“主题”部分自定义登录页面。