当前位置: 首页 > 后端技术 > Java

航查天可视化安全框架,轻松搭建属于你的认证授权平台!

时间:2023-04-01 21:25:55 Java

之前我们在学习Oauth2的时候,需要通过写代码的方式来实现认证授权服务。最近发现了一个可视化的安全框架Keycloak,只需几条命令就可以快速搭建认证授权服务,无需自行开发。原生支持SpringBoot,非常好用,推荐给大家!SpringBoot实战电商项目商城(50k+star)地址:https://github.com/macrozheng/mall简介Keycloak是Github上9.4k+star的开源认证授权平台。Keycloak功能很多,可以实现用户注册、社交登录、单点登录、双因素认证、LDAP集成等功能。安装和使用Docker搭建Keycloak服务非常简单,两条命令就可以了,我们就用这个方法。首先下载Keycloak的Docker镜像,注意使用jboss的镜像,官方镜像不在DockerHub中;dockerpulljboss/keycloak:14.0.0使用以下命令运行Keycloak服务:dockerrun-p8080:8080--namekeycloak\-eKEYCLOAK_USER=admin\-eKEYCLOAK_PASSWORD=admin\-djboss/keycloak:14.0.0运行成功后,可以通过以下地址访问Keycloak服务。点击圈出处,进入管理控制台。访问地址:http://192.168.7.142:8080控制台使用接下来我们就来体验一下Keycloak的管理控制台,看看这个可视化的安全框架有什么神奇之处。首先输入我们的账号密码admin:admin进行登录;登录成功后,进入管理控制台,我们可以发现Keycloak是英文界面,良心的是它还支持多国语言(包括中文),只需将Themes->DefaultLocale改为zh-CN即可切换中文;修改完成后,保存并刷新页面,Keycloak控制台会变成中文界面;keycloak很良心的给很多属性加了说明,而且还是中文的,基本上看了说明就知道怎么用了;在开始使用Keycloak保护应用安全之前,我们要创建一个领域(realm),相当于租户的概念,不同租户之间的数据是相互隔离的。在这里我们创造了一个宏正境界;接下来我们可以在macrozheng字段中创建用户,创建宏用户;然后我们编辑用户信息并在凭据下设置密码;创建用户后,我们就可以登录了,用户的登录地址和管理员的登录地址是不一样的,我们可以在客户端页面查看地址;访问该地址后即可登录,访问地址:http://192.168.7.142:8080/aut...登录成功后,用户可以查看和修改个人信息。将OAuth2.0与Oauth2结合使用是一种行业标准授权协议。在《Spring Cloud Security:Oauth2使用入门》一文中,我们详细介绍了Oauth2的使用。当然Keycloak也支持。下面我们通过调用接口来体验一下。两种常用的授权模式下面我们来回顾一下Oauth2常用的两种授权模式。授权码方式(A)客户端将用户引导至认证服务器;(B)用户在认证服务器上登录并授权;(C)认证服务器向客户端返回授权码;(D)客户端通过授权码和跳转地址从认证服务器获取访问令牌;(E)身份验证服务器颁发访问令牌(需要刷新令牌)。密码方式(A)客户端从用户处获取用户名和密码;(B)客户端通过用户的用户名和密码访问认证服务器;(C)认证服务器返回accesstoken(需要带refreshtoken)。密码模式体验首先需要在Keycloak中创建客户端mall-tiny-keycloak;然后创建一个角色mall-tiny;然后将角色分配给宏用户;万事俱备,在PostmanToken中使用Oauth2调用接口即可获取,获取token的地址:http://192.168.7.142:8080/aut...结合SpringBoot接下来,我们来体验一下使用Keycloak来保护SpringBoot应用的安全。由于Keycloak原生支持SpringBoot,所以使用起来还是很简单的。由于我们的SpringBoot应用会运行在localhost:8088上,所以我们需要配置Keycloak客户端的有效重定向URI;接下来我们需要修改应用的pom.xml来集成Keycloak;org.keycloakkeycloak-spring-boot-starter14.0.0然后修改配置文件application.yml,具体属性见注释。需要注意的是,可访问的角色是绑定在路径上的;#Keycloak相关配置keycloak:#设置客户端所在realm:macrozheng#设置Keycloak认证服务访问路径auth-server-url:http://192.168.7.142:8080/auth#设置客户端IDresource:mall-tiny-keycloak#设为publicclient,不能访问任何keypublic-client:true#配置角色和可访问路径对应security-constraints:-auth-roles:-mall-tinysecurity-collections:-patterns:-'/brand/*'-'/swagger-ui/*'接下来访问应用的Swagger页面,访问有时会跳转到Keycloak控制台登录,访问地址:http://localhost:8088/swagger...登录成功后,可以访问受保护的Swagger页面和API接口,非常标准的Oauth2授权码方式,流程参考授权码方式说明。总结Keycloak是一个非常优秀的可视化安全框架,可以让我们在不搭建认证服务的情况下完成认证授权功能。原生支持SpringBoot,无需修改代码即可集成。不愧是现代安全框架!参考Keycloak官方文档:https://www.keycloak.org/gett...保护SpringBoot应用安全:https://www.keycloak.org/docs...项目源码地址https://gitee.com/macrozheng/...