SpringBoot整合Keycloak实现单点登录的示例代码
目录
- 1. 搭建Keycloak服务器
- 2. 配置权限
- 2.1. 登陆
- 2.2. 创建Realm
- 2.3. 创建用户
- 2.4. 创建客户端
- 2.5. 创建角色
- 2.6. 配置用户角色关系
- 2.7. 配置客户端和角色关系
- 3. 整合SpringBoot
- 3.1. 引入核心依赖
- 3.2. 编写Controller
- 3.3. 编写application.yml
- 4. 验证
1. 搭建Keycloak服务器 本文使用docker compose安装keycloak,因为keycloak依赖数据库,在安装keycloak之前需要先安装数据库,本文使用mysql,具体的compose配置如下:
version: '3.7'services:mysql:container_name: mysqlimage: mysql:latestrestart: unless-stoppedcommand: --lower_case_table_names=1 --sql-mode=""ports:- 3306:3306volumes:- ./db-init:/docker-entrypoint-initdb.d- ./data:/var/lib/mysqlenvironment:MYSQL_ROOT_PASSWORD: 123456keycloak:container_name: keycloakimage: jboss/keycloak:latestrestart: unless-stoppeddepends_on:- mysqlenvironment:DB_VENDOR: mysqlDB_USER: rootDB_PASSWORD: 123456KEYCLOAK_USER: adminKEYCLOAK_PASSWORD: 123456ports:- 8080:8080
依次执行命令docker-compose up mysql和docker-compose up keycloak
![SpringBoot整合Keycloak实现单点登录的示例代码](https://img.it610.com/image/info11/59077c309a044e5488fcfba3de014f17.jpg)
文章图片
![SpringBoot整合Keycloak实现单点登录的示例代码](https://img.it610.com/image/info11/c7b5fa8d7b6143d1a597f3ef77826b1d.jpg)
文章图片
2. 配置权限
2.1. 登陆
在浏览器输入地址:http://localhost:8080,出现如下界面
![SpringBoot整合Keycloak实现单点登录的示例代码](https://img.it610.com/image/info11/2c3b534ea487443bbfc755b4d1c8ed68.jpg)
文章图片
点击Administration Console,进入登录界面
![SpringBoot整合Keycloak实现单点登录的示例代码](https://img.it610.com/image/info11/cb43ac381d9e4d0dbf12c40d8406c47b.jpg)
文章图片
输入用户名和密码:admin/123456,进入首页
2.2. 创建Realm
鼠标放在下图箭头所指处,会弹出Add realm选项
![SpringBoot整合Keycloak实现单点登录的示例代码](https://img.it610.com/image/info11/6a8f046e4e4a4fd58c615567e8cf9c70.jpg)
文章图片
点击Add realm进入配置页面,输入realm名称,点击Create
![SpringBoot整合Keycloak实现单点登录的示例代码](https://img.it610.com/image/info11/f4574b489b594174b31ec903e63b90de.jpg)
文章图片
配置重定向地址
![SpringBoot整合Keycloak实现单点登录的示例代码](https://img.it610.com/image/info11/aacdb5f3a7a943cca78d0cda84bf11e4.jpg)
文章图片
2.3. 创建用户
点击左侧Users选项,进入用户创建页面
![SpringBoot整合Keycloak实现单点登录的示例代码](https://img.it610.com/image/info11/f88a7963054c4caca58e8a1450159ed6.jpg)
文章图片
点击Add user,进入创建用户,输入用户名称
![SpringBoot整合Keycloak实现单点登录的示例代码](https://img.it610.com/image/info11/54931f760c6b432ead39e60c297763b9.jpg)
文章图片
点击保存,选择Credentials配置密码
![SpringBoot整合Keycloak实现单点登录的示例代码](https://img.it610.com/image/info11/164a74c1713945e99fd970af1a5a6370.jpg)
文章图片
2.4. 创建客户端
点击左侧Clients选项,点击Create
![SpringBoot整合Keycloak实现单点登录的示例代码](https://img.it610.com/image/info11/70d322572bd24e0f8da44bdb19b3a401.jpg)
文章图片
输入Client ID名称,点击保存
![SpringBoot整合Keycloak实现单点登录的示例代码](https://img.it610.com/image/info11/e923b3f3fb0548c1ac77b93b32943db8.jpg)
文章图片
2.5. 创建角色
在左侧菜单栏选择Roles
![SpringBoot整合Keycloak实现单点登录的示例代码](https://img.it610.com/image/info11/c6910be493a841ba9748499e90afebf8.jpg)
文章图片
点击Add Role
![SpringBoot整合Keycloak实现单点登录的示例代码](https://img.it610.com/image/info11/82f0c5c6f42a4c4f9d14e4db627a9a3d.jpg)
文章图片
2.6. 配置用户角色关系
![SpringBoot整合Keycloak实现单点登录的示例代码](https://img.it610.com/image/info11/bf45ba3faf4e4c708ec953084fdebe8f.jpg)
文章图片
2.7. 配置客户端和角色关系
选择左侧菜单项Clients,配置Client和角色的关系
![SpringBoot整合Keycloak实现单点登录的示例代码](https://img.it610.com/image/info11/9482366ee81c40b6933ad6335bff0334.jpg)
文章图片
3. 整合SpringBoot
3.1. 引入核心依赖
org.springframework.boot spring-boot-starter-weborg.keycloak keycloak-spring-boot-starter17.0.0 org.keycloak.bom keycloak-adapter-bom17.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: 8139spring:application:name: springboot-keycloakkeycloak:realm: springboot-keycloak #客户端所在的realmauth-server-url: http://localhost:8080/auth #keycloak授权服务器地址resource: sb-keycloak #客户端名称public-client: true #声明为一个公开的客户端security-constraints:- auth-roles:- sk-rolesecurity-collections:- name: hellopatterns:- '/hello/world'
更多有关SpringBoot整合Keycloak的相关资料,请参阅Keycloak官网文档
4. 验证 启动SpringBoot项目,在浏览器输入地址http://localhost:8139/hello/world,会重定向到keycloak登陆页面,如下图所示:
![SpringBoot整合Keycloak实现单点登录的示例代码](https://img.it610.com/image/info11/ec6264be43e8409db713f1ea1df79129.jpg)
文章图片
输入用户名和密码:sk-admin/123456
![SpringBoot整合Keycloak实现单点登录的示例代码](https://img.it610.com/image/info11/261eb0fac52346ac8d5b9a1aab112b81.jpg)
文章图片
【SpringBoot整合Keycloak实现单点登录的示例代码】 到此这篇关于SpringBoot整合Keycloak实现单点登录的示例代码的文章就介绍到这了,更多相关SpringBoot Keycloak单点登录内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- SpringBoot整合Thymeleaf小项目及详细流程
- 基于springboot与axios的整合问题
- springboot用户数据修改的详细实现
- 教你如何将Springboot项目成功部署到linux服务器
- 架构|Java大牛带你4小时开发一个SpringBoot+vue前后端分离博客项目
- 前后端分离|springboot+vue 架构 (二)
- SpringBoot|SpringBoot + Vue 前后端分离架构搭建
- 【SpringBoot实战】数据访问
- 1024程序员节|SpringBoot整合Mybatis-plus及自定义多表查询
- springboot结合maven配置不同环境的profile方式