SpringBoot整合Keycloak实现单点登录的示例代码

 更新时间:2022年03月22日 08:32:56   作者:liu320yj  
本文主要介绍了SpringBoot整合Keycloak实现单点登录的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

Keycloak是一个开源的身份和权限访问管理工具,轻松为应用程序和安全服务添加身份验证,无需处理储存用户或者验证用户,其提供用户联合、强健的身份验证、用户管理和细粒度授权等功能。

1. 搭建Keycloak服务器

本文使用docker compose安装keycloak,因为keycloak依赖数据库,在安装keycloak之前需要先安装数据库,本文使用mysql,具体的compose配置如下:

version: '3.7'
services:
  mysql:
    container_name: mysql
    image: mysql:latest
    restart: unless-stopped
    command: --lower_case_table_names=1 --sql-mode=""
    ports:
      - 3306:3306
    volumes:
      - ./db-init:/docker-entrypoint-initdb.d
      - ./data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: 123456
  keycloak:
    container_name: keycloak
    image: jboss/keycloak:latest
    restart: unless-stopped
    depends_on:
      - mysql
    environment:
      DB_VENDOR: mysql
      DB_USER: root
      DB_PASSWORD: 123456
      KEYCLOAK_USER: admin
      KEYCLOAK_PASSWORD: 123456
    ports:
      - 8080:8080

依次执行命令docker-compose up mysql和docker-compose up keycloak

安装mysql

安装keycloak

2. 配置权限

2.1. 登陆

在浏览器输入地址:http://localhost:8080,出现如下界面

首页

点击Administration Console,进入登录界面

登录页

输入用户名和密码:admin/123456,进入首页

2.2. 创建Realm

鼠标放在下图箭头所指处,会弹出Add realm选项

进入新增realm

点击Add realm进入配置页面,输入realm名称,点击Create

新增realm

配置重定向地址

创建重定向地址

2.3. 创建用户

点击左侧Users选项,进入用户创建页面

创建用户

点击Add user,进入创建用户,输入用户名称

创建用户

点击保存,选择Credentials配置密码

配置密码

2.4. 创建客户端

点击左侧Clients选项,点击Create

创建客户端

输入Client ID名称,点击保存

创建client

2.5. 创建角色

在左侧菜单栏选择Roles

创建角色

点击Add Role

创建角色

2.6. 配置用户角色关系

用户添加角色

2.7. 配置客户端和角色关系

选择左侧菜单项Clients,配置Client和角色的关系

client关联角色

3. 整合SpringBoot

3.1. 引入核心依赖

<dependencies>
	<dependency>
	    <groupId>org.springframework.boot</groupId>
	    <artifactId>spring-boot-starter-web</artifactId>
	</dependency>
	<dependency>
	    <groupId>org.keycloak</groupId>
	    <artifactId>keycloak-spring-boot-starter</artifactId>
	    <version>17.0.0</version>
	</dependency>
<dependencies/>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.keycloak.bom</groupId>
            <artifactId>keycloak-adapter-bom</artifactId>
            <version>17.0.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

3.2. 编写Controller

@RestController
@RequestMapping("/hello")
public class HelloController {

    @GetMapping("/world")
    public String hello() {
        return "Hello World";
    }
}

3.3. 编写application.yml

server:
  port: 8139
spring:
  application:
    name: springboot-keycloak
keycloak:
  realm: springboot-keycloak #客户端所在的realm
  auth-server-url: http://localhost:8080/auth #keycloak授权服务器地址
  resource: sb-keycloak #客户端名称
  public-client: true #声明为一个公开的客户端
  security-constraints:
    - auth-roles:
        - sk-role
      security-collections:
        - name: hello
          patterns:
            - '/hello/world'

更多有关SpringBoot整合Keycloak的相关资料,请参阅Keycloak官网文档

4. 验证

启动SpringBoot项目,在浏览器输入地址http://localhost:8139/hello/world,会重定向到keycloak登陆页面,如下图所示:

重定向到keycloak登陆页

输入用户名和密码:sk-admin/123456

跳转到访问页

 到此这篇关于SpringBoot整合Keycloak实现单点登录的示例代码的文章就介绍到这了,更多相关SpringBoot Keycloak单点登录内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java中动态规则的实现方式示例详解

    Java中动态规则的实现方式示例详解

    这篇文章主要介绍了Java中动态规则的实现方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • 微服务Springcloud之Feign的基本使用

    微服务Springcloud之Feign的基本使用

    这篇文章主要介绍了微服务Springcloud之Feign的基本使用,Spring Cloud集成Feign并对其进行了增强,使Feign支持了Spring MVC注解,需要的朋友可以参考下
    2023-03-03
  • Mybatis generator自动生成代码插件实例解析

    Mybatis generator自动生成代码插件实例解析

    这篇文章主要介绍了Mybatis generator自动生成代码插件实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • 基于RabbitMQ的简单应用(详解)

    基于RabbitMQ的简单应用(详解)

    下面小编就为大家分享一篇基于RabbitMQ的简单应用(详解),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-11-11
  • 举例解析Java的图像缓冲技术的使用

    举例解析Java的图像缓冲技术的使用

    这篇文章主要介绍了Java的图像缓冲技术的使用,使用到了Java的awt.image包,需要的朋友可以参考下
    2015-10-10
  • Java实现Excel与TXT文本的高效互转

    Java实现Excel与TXT文本的高效互转

    在日常开发中,我们经常需要在不同的数据存储格式之间进行转换,本文将分享如何在 Java 中高效实现 Excel 与 TXT 的互转,有需要的小伙伴可以了解下
    2025-09-09
  • Springboot 过滤器、拦截器、全局异常处理的方案处理小结

    Springboot 过滤器、拦截器、全局异常处理的方案处理小结

    拦截器是一种动态拦截方法调用的机制,与过滤器类似,是Spring框架中提供的,用来动态拦截控制器方法的执行,这篇文章主要介绍了Springboot 过滤器、拦截器、全局异常处理,需要的朋友可以参考下
    2024-03-03
  • Java使用DateFormatter格式化日期时间的方法示例

    Java使用DateFormatter格式化日期时间的方法示例

    这篇文章主要介绍了Java使用DateFormatter格式化日期时间的方法,结合具体实例分析了java使用DateFormatter格式化日期时间的相关操作技巧,需要的朋友可以参考下
    2017-04-04
  • Java日常练习题,每天进步一点点(18)

    Java日常练习题,每天进步一点点(18)

    下面小编就为大家带来一篇Java基础的几道练习题(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望可以帮到你
    2021-07-07
  • springBoot项目常用目录解读

    springBoot项目常用目录解读

    这篇文章主要介绍了springBoot项目常用目录解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05

最新评论