乐趣区

关于java:吊炸天的可视化安全框架轻松搭建自己的认证授权平台

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

退出移动版