keycloak-鉴权springboot

news2024/9/29 15:32:18

一、环境描述

keycloak鉴权springboot的方式,此处简单介绍,springboot官方也提供了demo

https://github.com/keycloak/keycloak-quickstarts/tree/latest/spring/rest-authz-resource-server

以及文档说明

Securing Applications and Services Guide

本文环境
springboot版本:2.7.1,(此版本无所谓,都是一样的)

keycloak版本:23.0.7(截止目前最新版本)

二、keycloak配置

1、创建realm

登录keycloak后先新建一个realm,在realm中,可以很轻松使用一套用户体系,当然用户体系也可以跨realm使用。realm相当于一个微服务群,client相当于每一个服务。

输入名称,当然有realm配置文件备份的话还可以点击browse导入配置,然后点击create按钮创建realm

2、创建user

进入user列表,点击add user。此user可以使用本地服务的user,这样就能用本地服务用户体系登录系统了。此方法后续再演示

输入用户名,点击create,不用着急密码,下一步再新建密码

选择Credential tab签,点击set password

输入密码和确认密码,点击save

然后,用户创建成功,看到角色(role mapping)中用户默认绑定了 default-roles-quarkus-test 的默认角色。keycloak中角色是要和认证权限匹配的

3、创建client

23.0.7版本中此处授权不选,对应的是老版本(15前)的访问鉴权控制设置为public。

设置重定向rul

点击save,完成client创建

三、springboot配置

在application.properties中配置如下,本来想在.yml 中配置,结果官方例子是properties为了抄起来方便就这样吧。

# 对应keycloak的域realm
keycloak.realm = quarkus-test
# keycloak访问地址
keycloak.auth-server-url = http://127.0.0.1:8080
# https 验证
keycloak.ssl-required = external
# 对应keycloak中的client
keycloak.resource = login-test
# 鉴权时角色匹配
keycloak.use-resource-role-mappings = true
# 客户端(本服务)鉴权连接keycloak为public,不需要客户端secret之类
keycloak.public-client=true
# 鉴权keycloak角色
keycloak.security-constraints[0].authRoles[0]=default-roles-login-realm
# 鉴权springboot API 接口
keycloak.security-constraints[0].securityCollections[0].patterns[0]=/demo/*

官方说这个配置适用于keycloak新版本,我没用旧版本做过测试,没有发言权。

springboot controller 代码

截个图,代码不用粘贴了吧

启动springboot

在被keycloak拦截到的时候,控制台日志打印出了keycloak api地址,可以访问看看

四 、登录403问题处理

访问springboot后台接口

然后跳转到登录页

输入用户名密码后 403,说明用户没有配置client角色权限。

1、配置client权限角色

2、给用户匹配该角色

默认角色列表为域角色,选择客户端角色进行匹配

分配好角色后,保存,回到springboot访问页刷新如下

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1491521.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ruoyi-nbcio-plus的Vue3前端一些插件使用介绍(二)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址: http://122.227.135.243:9666 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: https://gitee.com/nbach…

微信小程序自动化测试——微信小程序云测服务!

MiniTest 微信小程序云测服务是一套由微信测试团队自主研发,联合WeTest云真机能力,共同推出的微信小程序自动化测试服务。 服务基于云真机,支持开发者简单快捷地实现小程序智能化Monkey测试,录制回放,自定义测试和性能…

基于springboot+vue的医疗报销系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

YOLO算法改进Backbone系列之:RepViT

摘要:近年来,与轻量级卷积神经网络(cnn)相比,轻量级视觉变压器(ViTs)在资源受限的移动设备上表现出了更高的性能和更低的延迟。这种改进通常归功于多头自注意模块,它使模型能够学习全局表示。然而,轻量级vit和轻量级cn…

猫咪冻干的价格差别为什么那么大?价格实惠的主食冻干分享

随着养猫科学知识的普及,越来越多的铲屎官选择更符合猫咪饮食天性的主食冻干喂养。尽管有些铲屎官因价格犹豫,但像我这样的资深铲屎官深知其益处。尽管其价格稍高于烘焙粮和膨化粮,但主食冻干为猫咪健康带来的实际好处是无法估量的。 对于像我…

约课小程序有哪些功能

​约课小程序为教育机构、教师和学生提供了便捷的预约和管理服务,有效提升了教学效率和用户体验。在这篇文章中,我们将介绍约课小程序常见的功能,帮助教育机构更好地了解如何利用小程序来提升服务质量和管理效率。 1. **课程预约功能**&…

基于openKylin与RISC-V的MindSpore AI项目实践

项目目标: 在openKylin系统上安装和配置MindSpore框架。开发一个简单的图像分类模型,并在RISC-V平台上进行训练和推理。根据RISC-V的特性,对MindSpore框架进行必要的优化。 目录 项目目标: 训练模型 编写训练代码,设…

美易官方《盘前:美国股指期货温和走低》

美国股指期货在盘前交易中温和走低,市场情绪在美联储主席鲍威尔即将作证前显得谨慎。投资者对即将公布的证词内容充满期待,以寻求对美联储未来货币政策的更多线索。 鲍威尔即将在国会作证,这是市场关注的焦点事件之一。他的证词可能会对美元汇…

用有名管道实现进程AB之间的对话

题目 #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <errno.h> #include <fcntl.h> #include <string.h> #include <unistd.h> int main(int argc, const char *argv[]) {//创建一个有名管道文件if(mk…

【力扣白嫖日记】1045.买下所有产品的客户

前言 练习sql语句&#xff0c;所有题目来自于力扣&#xff08;https://leetcode.cn/problemset/database/&#xff09;的免费数据库练习题。 今日题目&#xff1a; 1045.买下所有产品的客户 表&#xff1a;Customer 列名类型customer_idintproduct_keyint 该表可能包含重复…

市场复盘总结 20240305

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整&#xff0c;采用龙空龙模式 一支股票 10%的时候可以操作&#xff0c; 90%的时间适合空仓等待 二进三&#xff1a; 进级率中 25% 最常用的…

【打工日常】使用docker部署轻量的运维监控工具

一、Uptime-Kuma介绍 Uptime-Kuma是一个轻量级的自动化运维监控工具&#xff0c;最为引人注目的特点是其出色的监控Dashboard面板。部署简单&#xff0c;工具轻量又强大。而且&#xff0c;Uptime-Kuma是开源免费的&#xff0c;并支持基于Docker的部署方式。它支持网站、容器、数…

动静态库-动态库加载

动静态库 前言引入 一、静态库1. 创建静态库①原理②创建 2. 使用静态库①借助编译选项②只需要带库名 3. 小结 二、动态库1. 创建动态库2. 使用动态库 三、 动态库加载原理——进程地址空间1. 地址①程序没有被加载前的地址②程序加载后的地址 2. 原理①动态库的地址②原理 前…

实用干货:分享一个自动切换输入法的IDE插件

大家好&#xff0c;我是大澈&#xff01; 本文约1100字&#xff0c;整篇阅读大约需要3分钟。 关注微信公众号&#xff1a;“程序员大澈”&#xff0c;免费加入问答群&#xff0c;一起交流技术难题与未来&#xff01; 现在关注公众号&#xff0c;免费送你 ”前后端入行大礼包…

C++入门全集(5):内存管理

前言 一、内存区域划分 二、C的内存管理方式 2.1 对内置类型 2.2 对自定义类型 三、new和delete的底层实现 四、new和delete的原理 五、定位new 六、malloc/free和new/delete 前言 在C中&#xff0c;内存管理是不可避免的一门必修课。C对内存的自由度使其获得了更高的…

鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:点击回弹效果)

设置组件点击时回弹效果。 说明&#xff1a; 从API Version 10开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 clickEffect clickEffect(value: ClickEffect | null) 设置当前组件点击回弹效果。 系统能力&#xff1a; SystemCapabilit…

no declaration can be found for element ‘rabbit:connection-factory‘

spring-mvc 配置 rabbitmq 出现问题。 我的解决方案如下&#xff1a; 1 找到配置文件 spring-rabbitmq.xml 我的配置文件叫&#xff1a;spring-rabbitmq.xml&#xff0c;你们按照自己的查找。 2 定位如下URI 接着 Ctrl鼠标左键 3 确定spring-rabbit-x.x.xsd 按照步骤2 &…

回溯算法01-组合(Java)

1.组合 题目描述 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;n 4, k 2 输出&#xff1a; [[2,4],[3,4],[2,3],[1,2],[1,3],[1,4]]示例 2&#xff1a; 输入&#x…

巨控GRM561/562/563Y系列标准OPCUA客户端协议访问西门子1200PLC

驱动名称: 标准OPCUA客户端协议 描述: 本机作主机,读写其他外部设备数据 ◆寄存器类型: UA寄存器 地址范围: 可用数据类型&#xff1a;[BIT] [INT8] [INT16] [INT32] [INT64] [UINT8] [UINT16] [UINT32] [UINT64] [FLOAT32] [FLOAT64] ◆寄存器类型: 设备特殊寄存器 地址…

光影交织:汽车穿越隧道的视觉盛宴

在繁忙的城市中&#xff0c;隧道成为了连接两端的重要通道。而对于汽车来说&#xff0c;穿越隧道不仅是一次简单的空间转移&#xff0c;更是一场融合了视觉、技术与安全的独特体验。 当汽车缓缓驶入隧道&#xff0c;外界的光线逐渐减弱&#xff0c;隧道内部的光线开始发挥作用。…