之前咱们在学习 Oauth2 的时候,须要通过写代码来实现认证受权服务。最近发现一款可视化的平安框架 Keycloak,只需几个命令就能够疾速搭建认证受权服务,无需自行开发。原生反对 SpringBoot,应用起来非常简单,举荐给大家!
SpringBoot 实战电商我的项目 mall(50k+star)地址:https://github.com/macrozheng/mall
简介
Keycloak 是一款开源的认证受权平台,在 Github 上已有 9.4k+Star。Keycloak 性能泛滥,可实现用户注册、社会化登录、单点登录、双重认证、LDAP 集成等性能。
装置
应用 Docker 搭建 Keycloak 服务非常简单,两个命令就完事了,咱们将采纳此种形式。
- 首先下载 Keycloak 的 Docker 镜像,留神应用
jboss
的镜像,官网镜像不在 DockerHub 中;
docker pull jboss/keycloak:14.0.0
- 应用如下命令运行 Keycloak 服务:
docker run -p 8080:8080 --name keycloak \
-e KEYCLOAK_USER=admin \
-e KEYCLOAK_PASSWORD=admin \
-d jboss/keycloak:14.0.0
- 运行胜利后能够通过如下地址拜访 Keycloak 服务,点击圈进去的中央能够拜访治理控制台,拜访地址:http://192.168.7.142:8080
控制台应用
接下来咱们来体验下 Keycloak 的治理控制台,看看这个可视化平安框架有什么神奇的中央。
- 首先输出咱们的账号密码
admin:admin
进行登录;
- 登录胜利后进入治理控制台,咱们能够发现 Keycloak 是英文界面,良心的是它还反对多国语言(包含中文),只有将
Themes->Default Locale
改为zh-CN
即可切换为中文;
- 批改实现后保留并刷新页面,Keycloak 控制台就变成中文界面了;
- Keycloak 十分良心的给很多属性都增加了解释,而且还是中文的,根本看下解释就能够晓得如何应用了;
- 在咱们开始应用 Keycloak 爱护利用平安之前,咱们得先创立一个畛域(realm),畛域相当于租户的概念,不同租户之间数据互相隔离,这里咱们创立一个
macrozheng
的畛域;
- 接下来咱们能够在
macrozheng
畛域中去创立用户,创立一个macro
用户;
- 之后咱们编辑用户的信息,在
凭据
下设置明码;
- 创立完用户之后,就能够登录了,用户和管理员的登录地址并不相同,咱们能够在
客户端
页面中查看到地址;
- 拜访该地址后即可登录,拜访地址:http://192.168.7.142:8080/aut…
- 用户登录胜利后即可查看并批改个人信息。
联合 Oauth2 应用
OAuth 2.0 是用于受权的行业标准协议,在《Spring Cloud Security:Oauth2 应用入门》一文中咱们具体介绍了 Oauth2 的应用,当然 Keycloak 也是反对的,上面咱们通过调用接口的形式来体验下。
两种罕用的受权模式
咱们再回顾下两种罕用的 Oauth2 受权模式。
受权码模式
- (A)客户端将用户导向认证服务器;
- (B)用户在认证服务器进行登录并受权;
- (C)认证服务器返回受权码给客户端;
- (D)客户端通过受权码和跳转地址向认证服务器获取拜访令牌;
- (E)认证服务器发放拜访令牌(有须要带上刷新令牌)。
明码模式
- (A)客户端从用户获取用户名和明码;
- (B)客户端通过用户的用户名和明码拜访认证服务器;
- (C)认证服务器返回拜访令牌(有须要带上刷新令牌)。
明码模式体验
- 首先须要在 Keycloak 中创立客户端
mall-tiny-keycloak
;
- 而后创立一个角色
mall-tiny
;
- 而后将角色调配给
macro
用户;
- 所有准备就绪,在 Postman 中应用 Oauth2 的形式调用接口就能够获取到 Token 了,获取 token 的地址:http://192.168.7.142:8080/aut…
联合 SpringBoot 应用
接下来咱们体验下应用 Keycloak 爱护 SpringBoot 利用的平安。因为 Keycloak 原生反对 SpringBoot,所以应用起来还是很简略的。
- 因为咱们的 SpringBoot 利用将运行在
localhost:8088
下面,咱们须要对 Keycloak 的客户端的无效的重定向 URI
进行配置;
- 接下来咱们须要批改利用的
pom.xml
,集成 Keycloak;
<!-- 集成 Keycloak-->
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-spring-boot-starter</artifactId>
<version>14.0.0</version>
</dependency>
- 再批改利用的配置文件
application.yml
,具体属性参考正文即可,须要留神的是给门路绑定好能够拜访的角色;
# Keycloak 相干配置
keycloak:
# 设置客户端所在畛域
realm: macrozheng
# 设置 Keycloak 认证服务拜访门路
auth-server-url: http://192.168.7.142:8080/auth
# 设置客户端 ID
resource: mall-tiny-keycloak
# 设置为公开客户端,不须要秘钥即可拜访
public-client: true
# 配置角色与可拜访门路的对应关系
security-constraints:
- auth-roles:
- mall-tiny
security-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/…