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单点登录内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 用Eclipse生成JPA元模型的方法

    用Eclipse生成JPA元模型的方法

    下面小编就为大家带来一篇用Eclipse生成JPA元模型的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • java 和 json 对象间转换

    java 和 json 对象间转换

    这篇文章主要介绍了java 和 json 对象间转换,需要的朋友可以参考下
    2014-03-03
  • Spring boot详解缓存redis实现定时过期方法

    Spring boot详解缓存redis实现定时过期方法

    本篇文章分享的就是spring boot中的一个轮子,spring cache注解的方式实现接口数据缓存。默认的配置想非常简单,但是有一个弊端是缓存数据为永久缓存,本次将介绍如何设置接口缓存数据的过期时间
    2022-07-07
  • SpringBoot整合EasyExcel实现文件导入导出

    SpringBoot整合EasyExcel实现文件导入导出

    这篇文章主要介绍了SpringBoot整合EasyExcel实现文件导入导出的方法,帮助大家更好的理解和学习使用SpringBoot,感兴趣的朋友可以了解下
    2021-05-05
  • Java list foreach修改元素方式

    Java list foreach修改元素方式

    这篇文章主要介绍了Java list foreach修改元素方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Mybatis-plus实现主键自增和自动注入时间的示例代码

    Mybatis-plus实现主键自增和自动注入时间的示例代码

    这篇文章主要介绍了Mybatis-plus实现主键自增和自动注入时间的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Java实现简单台球游戏

    Java实现简单台球游戏

    这篇文章主要为大家详细介绍了Java实现简单台球游戏,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • Springboot 异步任务和定时任务的异步处理

    Springboot 异步任务和定时任务的异步处理

    本文介绍了Springboot异步任务和定时任务的异步处理,Springboot 中,异步任务和定时任务是经常遇到的处理问题方式,为了能够用好这两项配置,不干扰正常的业务,需要对其进行异步化配置。怎么设置合理的异步处理线程就是其核心和关键,下文详情需要的朋友可以参考下
    2022-05-05
  • Spring+quartz实现定时发送邮件功能实例

    Spring+quartz实现定时发送邮件功能实例

    spring提供的定时发送邮件功能一直深受广大web开发者的喜爱,这篇文章主要介绍了Spring+quartz实现定时发送邮件功能实例,有兴趣的可以了解一下。
    2017-03-03
  • Java如何通过Maven管理项目依赖

    Java如何通过Maven管理项目依赖

    这篇文章主要介绍了Java如何通过Maven管理项目依赖,帮助大家更好的理解和使用maven,感兴趣的朋友可以了解下
    2020-10-10

最新评论