以前写过一些使用 Keycloak 保护 Spring Boot 应用的文章,今天再从 0 开始介绍一下如何使用 Keycloak 来保护 SpringBoot 应用,但并不局限于 Keycloak,可以通过配置的方式,将 Keycloak 替换成任何兼容 OIDC 的身份认证系统。
在开始正文前,先总结一下以前的文章:

今天还是用 spring-boot-starter-oauth2-resource-server,只是使用了 Web UI 的方式来创建项目,因此对新手更加友好,如果要使用命令行来创建项目脚手架,可以参考《Free Arch: 如何在 Spring Boot 应用中集成 Keycloak? - Jeff Tian的文章 - 知乎 》 中的文字版按步指引。

源代码

https://github.com/JeffTrain/protected

按步指引

创建项目脚手架代码

首先,去 https://start.spring.io/ 生成一个项目脚手架,如下图所示:
image.png
然后下载为 zip 包,如下图所示:
image.png

添加代码

接着就可以添加 controller 和 CustomWebSecurityConfigurerAdapter config 了,具体代码可以从 https://github.com/JeffTrain/protected 查看。

本地验证

然后点击 idea 启动项目,如下图所示: image.png
然后可以用 Postman 测试一下,访问 /api/public,不需要传 token,如下图所示:
image.png
接着用 Postman 不传 token 直接访问 /api/protected,得到 401 或者 403,不能正常访问,如下图所示:
image.png
最后从 Keycloak 里登录成功的面板,打开开发者工具可以抓取到一个有效的 token,如下图所示:
image.png
使用该有效的 token 再次访问 /api/protected,成功了,如下图所示:
image.png