之前咱们在学习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/...