Springboot中结合Keycloak和Spring security 开启细粒度权限控制
背景说明
Keycloak作为开源轻量级的统一账号管理系统,可以帮助我们快速搭建一个完整,安全的支持单点登录,开放平台,鉴权及授权的集中式账号管理系统。
加上Keycloak的Authorization Services,提供给我们灵活强大的细粒度权限控制,而不再局限在角色访问控制。
这篇文章重点在于,如何在springboot中集成spring security,以及keycloak,以及配置相关访问权限配置。
而 Keycloak服务的搭建,领域的配置,Authorization Services的配置则不在这里涉及。
引入依赖:Spring Security Adapter
Keycloak官方文档,提供了 Keycloak Java适配器的相关配置说明,集成Springboot说明,以及 Spring security中的集成,这篇文章主要参考
https://www.keycloak.org/docs/latest/securing_apps/index.html#_spring_security_adapter
可以作为官方文档的一个实践。
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-spring-security-adapter</artifactId>
<version>12.0.1</version>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-authz-client</artifactId>
<version>12.0.1</version>
</dependency>
结合spring security则必须加上 spring security的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
keycloak.json配置
keycloak的配置可以放在 application.yaml中,也可以单独放在自己的keycloak.json中;
放在不同位置,只需要在下面的配置文件中添加对应的resolver即可;
在这里,我们放在单独的keycloak.json中
{
"realm": "kulchao-mall",
"auth-server-url": "http://127.0.0.1:8018/auth",
"ssl-required": "none",
"resource": "mall_system",
"bearer-only": true,
"credentials": {
"secret": "a9e0d2ce-25a4-4e10-b8bf-577f28468a42"
},
"policy-enforcer": {
"paths": [
{
"name": "commodity",
"path": "/",
"methods": [
{
"method": "GET",
"scopes": ["view"]
},
{
"method": "POST",
"scopes": ["edit"]
}
]
}
]
}
}
KeycloakSecurityConfig配置
完成上述步骤后,就需要参照Spring Security的使用,配置下SecurityConfig,形式如下:
@EnableWebSecurity(debug = true)
@KeycloakConfiguration
public class KeycloakSecurityConfig extends KeycloakWebSecurityConfigurerAdapter {
...
}
下面一步步讲解其中需要注意的地方:

本文介绍如何在SpringBoot项目中集成SpringSecurity和Keycloak,并实现细粒度权限控制。通过配置Keycloak和SpringSecurity,可以实现安全且灵活的角色及权限管理。
最低0.47元/天 解锁文章
728





