吊炸天的可视化安全框架,轻松搭建自己的认证授权平台!
之前我们在学习Oauth2的时候,需要通过写代码来实现认证授权服务。最近发现一款可视化的安全框架Keycloak,只需几个命令就可以快速搭建认证授权服务,无需自行开发。原生支持SpringBoot,使用起来非常简单,推荐给大家!
1|0简介
Keycloak是一款开源的认证授权平台,在Github上已有9.4k+Star。Keycloak功能众多,可实现用户注册、社会化登录、单点登录、双重认证 、LDAP集成等功能。
2|0安装
使用Docker搭建Keycloak服务非常简单,两个命令就完事了,我们将采用此种方式。
- 首先下载Keycloak的Docker镜像,注意使用
jboss
的镜像,官方镜像不在DockerHub中;
- 使用如下命令运行Keycloak服务:
- 运行成功后可以通过如下地址访问Keycloak服务,点击圈出来的地方可以访问管理控制台,访问地址:http://192.168.7.142:8080
3|0控制台使用
接下来我们来体验下Keycloak的管理控制台,看看这个可视化安全框架有什么神奇的地方。
- 首先输入我们的账号密码
admin:admin
进行登录;
- 登录成功后进入管理控制台,我们可以发现Keycloak是英文界面,良心的是它还支持多国语言(包括中文),只要将
Themes->Default Locale
改为zh-CN
即可切换为中文;
- 修改完成后保存并刷新页面,Keycloak控制台就变成中文界面了;
- Keycloak非常良心的给很多属性都添加了解释,而且还是中文的,基本看下解释就可以知道如何使用了;
- 在我们开始使用Keycloak保护应用安全之前,我们得先创建一个领域(realm),领域相当于租户的概念,不同租户之间数据相互隔离,这里我们创建一个
macrozheng
的领域;
- 接下来我们可以在
macrozheng
领域中去创建用户,创建一个macro
用户;
- 之后我们编辑用户的信息,在
凭据
下设置密码;
- 创建完用户之后,就可以登录了,用户和管理员的登录地址并不相同,我们可以在
客户端
页面中查看到地址;
- 访问该地址后即可登录,访问地址:http://192.168.7.142:8080/auth/realms/macrozheng/account
- 用户登录成功后即可查看并修改个人信息。
4|0结合Oauth2使用
OAuth 2.0是用于授权的行业标准协议,在《Spring Cloud Security:Oauth2使用入门》 一文中我们详细介绍了Oauth2的使用,当然Keycloak也是支持的,下面我们通过调用接口的方式来体验下。
4|1两种常用的授权模式
我们再回顾下两种常用的Oauth2授权模式。
授权码模式
- (A)客户端将用户导向认证服务器;
- (B)用户在认证服务器进行登录并授权;
- (C)认证服务器返回授权码给客户端;
- (D)客户端通过授权码和跳转地址向认证服务器获取访问令牌;
- (E)认证服务器发放访问令牌(有需要带上刷新令牌)。
密码模式
- (A)客户端从用户获取用户名和密码;
- (B)客户端通过用户的用户名和密码访问认证服务器;
- (C)认证服务器返回访问令牌(有需要带上刷新令牌)。
4|2密码模式体验
- 首先需要在Keycloak中创建客户端
mall-tiny-keycloak
;
- 然后创建一个角色
mall-tiny
;
- 然后将角色分配给
macro
用户;
- 一切准备就绪,在Postman中使用Oauth2的方式调用接口就可以获取到Token了,获取token的地址:http://192.168.7.142:8080/auth/realms/macrozheng/protocol/openid-connect/token
5|0结合SpringBoot使用
接下来我们体验下使用Keycloak保护SpringBoot应用的安全。由于Keycloak原生支持SpringBoot,所以使用起来还是很简单的。
- 由于我们的SpringBoot应用将运行在
localhost:8088
上面,我们需要对Keycloak的客户端的有效的重定向URI
进行配置;
- 接下来我们需要修改应用的
pom.xml
,集成Keycloak;
- 再修改应用的配置文件
application.yml
,具体属性参考注释即可,需要注意的是给路径绑定好可以访问的角色;
- 接下来访问下应用的Swagger页面,访问的时候会跳转到Keycloak的控制台去登录,访问地址:http://localhost:8088/swagger-ui/
- 登录成功后,即可访问被保护的Swagger页面和API接口,一个很标准的Oauth2的授权码模式,流程参考授权码模式的说明即可。
6|0总结
Keycloak是一款非常不错的可视化安全框架,让我们无需搭建认证服务即可完成认证和授权功能。原生支持SpringBoot,基本无需修改代码即可集成,不愧为现代化的安全框架!
7|0参考资料
- Keycloak官方文档:https://www.keycloak.org/getting-started/getting-started-docker
- 保护SpringBoot应用安全:https://www.keycloak.org/docs/latest/securing_apps/index.html#_spring_boot_adapter
8|0项目源码地址
https://github.com/macrozheng/mall-learning/tree/master/mall-tiny-keycloak
__EOF__

本文链接:https://www.cnblogs.com/caicz/p/15064747.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人