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

网友投稿 536 2022-08-18


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

目录1. 搭建Keycloak服务器2. 配置权限2.1. 登陆2.2. 创建Realm2.3. 创建用户2.4. 创建客户端2.5. 创建角色2.6. 配置用户角色关系2.7. 配置客户端和角色关系3. 整合SpringBoot3.1. 引入核心依赖3.2. 编写Controller3.3. 编写application.yml4. 验证

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

2. 配置权限

2.1. 登陆

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

点击Administration Console,进入登录界面

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

2.2. 创建Realm

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

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

配置重定向地址

2.3. 创建用户

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

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

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

2.4. 创建客户端

点击左侧Clients选项,点击Create

输入Client ID名称,点击保存

2.5. 创建角色

在左侧菜单栏选择Roles

点击Add Role

2.6. 配置用户角色关系

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

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

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 #声明为一个公开的客户端

sLTsZLGszwrecurity-constraints:

- auth-roles:

- sk-role

security-collections:

- name: hello

patterns:

- '/hello/world'

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

4. 验证

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

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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:剑指Offer之Java算法习题精讲链表与二叉树专项训练
下一篇:SpringBoot整合Thymeleaf小项目及详细流程
相关文章

 发表评论

暂时没有评论,来抢沙发吧~