zoukankan      html  css  js  c++  java
  • 吊炸天的可视化安全框架,轻松搭建自己的认证授权平台!

    之前我们在学习Oauth2的时候,需要通过写代码来实现认证授权服务。最近发现一款可视化的安全框架Keycloak,只需几个命令就可以快速搭建认证授权服务,无需自行开发。原生支持SpringBoot,使用起来非常简单,推荐给大家!

    简介

    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/auth/realms/macrozheng/account

    图片

    • 用户登录成功后即可查看并修改个人信息。

    图片

    结合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/auth/realms/macrozheng/protocol/openid-connect/token

    图片

    结合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-ui/

    图片

    • 登录成功后,即可访问被保护的Swagger页面和API接口,一个很标准的Oauth2的授权码模式,流程参考授权码模式的说明即可。

    图片

    总结

    Keycloak是一款非常不错的可视化安全框架,让我们无需搭建认证服务即可完成认证和授权功能。原生支持SpringBoot,基本无需修改代码即可集成,不愧为现代化的安全框架!

    参考资料

    • Keycloak官方文档:https://www.keycloak.org/getting-started/getting-started-docker
    • 保护SpringBoot应用安全:https://www.keycloak.org/docs/latest/securing_apps/index.html#_spring_boot_adapter

    项目源码地址

    https://github.com/macrozheng/mall-learning/tree/master/mall-tiny-keycloak

    JUST DO IT!
  • 相关阅读:
    golang删除数组某个元素
    golang用通道实现信号量,控制并发个数
    什么是ScaleIO中的forwards rebuild和backwards rebuild?
    SQL Server中的database checkpoint
    如何将thick provision lazy zeroed的VMDK文件转换为thick provision eager zeroed?
    LoadTestAgentResultsLateException in VS2010
    SQL Server Instance无法启动了, 因为TempDB所在的分区没有了, 怎么办?
    VMware vCenter中, 如何辩认虚机上Raw Device Mapping过了的一块物理磁盘?
    SQL Server AlwaysOn Setup Step-By-Step Guide
    TPC-E在populate测试Database时需要注意的一些事项
  • 原文地址:https://www.cnblogs.com/caicz/p/15064747.html
Copyright © 2011-2022 走看看