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

SpringBoot整合Keycloak实现单点登录的示例代码_第1张图片

SpringBoot整合Keycloak实现单点登录的示例代码_第2张图片

2. 配置权限

2.1. 登陆

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

SpringBoot整合Keycloak实现单点登录的示例代码_第3张图片

点击Administration Console,进入登录界面

SpringBoot整合Keycloak实现单点登录的示例代码_第4张图片

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

2.2. 创建Realm

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

SpringBoot整合Keycloak实现单点登录的示例代码_第5张图片

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

SpringBoot整合Keycloak实现单点登录的示例代码_第6张图片

配置重定向地址

SpringBoot整合Keycloak实现单点登录的示例代码_第7张图片

2.3. 创建用户

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

SpringBoot整合Keycloak实现单点登录的示例代码_第8张图片

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

SpringBoot整合Keycloak实现单点登录的示例代码_第9张图片

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

SpringBoot整合Keycloak实现单点登录的示例代码_第10张图片

2.4. 创建客户端

点击左侧Clients选项,点击Create

SpringBoot整合Keycloak实现单点登录的示例代码_第11张图片

输入Client ID名称,点击保存

SpringBoot整合Keycloak实现单点登录的示例代码_第12张图片

2.5. 创建角色

在左侧菜单栏选择Roles

SpringBoot整合Keycloak实现单点登录的示例代码_第13张图片

点击Add Role

SpringBoot整合Keycloak实现单点登录的示例代码_第14张图片

2.6. 配置用户角色关系

SpringBoot整合Keycloak实现单点登录的示例代码_第15张图片

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

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

SpringBoot整合Keycloak实现单点登录的示例代码_第16张图片

3. 整合SpringBoot

3.1. 引入核心依赖


	
	    org.springframework.boot
	    spring-boot-starter-web
	
	
	    org.keycloak
	    keycloak-spring-boot-starter
	    17.0.0
	



    
        
            org.keycloak.bom
            keycloak-adapter-bom
            17.0.0
            pom
            import
        
    

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登陆页面,如下图所示:

SpringBoot整合Keycloak实现单点登录的示例代码_第17张图片

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

SpringBoot整合Keycloak实现单点登录的示例代码_第18张图片

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

你可能感兴趣的:(SpringBoot整合Keycloak实现单点登录的示例代码)