使用 Spring Security Resource Server 和 Keycloak,实现用户 RBAC、ABAC 授权,主要介绍:
- Spring Security Resource Server 如何与标准 OAuth2 协议集成。
- Spring Security Resource Server 如何与 Keycloak Authorization Server 集成。
- 如何校验和解析 JWT Token,获取用户详细信息。
- 如何使用 keycloak admin client 获取更多信息,执行更高级动作。
- Spring Security JWT Token 模式下如何方便本地 Debug,如何通过 keycloak admin client 模拟用户登录。
在开始之前我们先解释几点:
- Keycloak 官方的 Spring Boot Starter 后续将逐渐停止维护,所以我们只用 keycloak 的 client,自己实现一部分代码,有 client sdk 实现起来很容易。
- Spring Security OAuth 2.0 Resource Server
也有多种集成方式,这里我们只实现
JWT
这一种,并且是 sessionless 的,也就是只负责授权不负责登录认证
, 登录由网关通过 oauth2-proxy 实现,详情可参考另一篇博客介绍 traefik-oauth2-proxy-keycloak 。