数字证书实现oauth2.0与token去中心化的解耦

鉴权服务oauth2.0的既要还要的痛点

鉴权服务手撸?不可能,上spring security!
感觉还不够?再叠加oauth2.0!
鉴权太重?换用分布式token!
既然分布式了,是不是可以不用鉴权中心?拖出去三十大板!

一项新的技术解决了一个问题,可能带来新的问题,所以技术栈的选择就不可能有一个最终版本,只有最合适的。
比如说快速开发的小项目,那么直接手写鉴权不来得更快。
需要安全等级高一些的公司稍大项目,那么就换上spring security。
如果未来存在不同系统间的复杂鉴权,那么就需要用到oauth2.0

oauth2.0提供了资源服务校验令牌的插件,实现了资源服务无感验签,但是这是需要付出代价的!这里特指http访问方式,这个方式可能给服务带来延时,如果每个资源服务都需要校验,当调用链路很长的时候,就会造成延迟非常严重。

通用的解决方案

针对http访问延时,也有一个解决的办法,就是传递上下文,然后后面的资源服务跳过验签。不过,还是有存在一个http访问,当并发请求的时候就会出现严重延迟。

不过token的可以选择redis等方式,redis号称支持百万并发,响应是杠杠的。

redis虽然能解决延时,但是实际上把压力给到redis,依旧存在rpc,所以这个时候可能想到jwt,可是jwt就涉及到秘钥安全问题,等于进去下一个死循环了。

数字证书

数字证书最常见就是在https,数字证书就是解决网络信任问题,用在jwt的秘钥安全可信最合适不过。
通过数字证书实现oauth2.0服务负责复杂的鉴权功能,而数字证书负责后续的安全独立的令牌校验。

    @Beanpublic JwtAccessTokenConverter getJwtAccessTokenConverter() throws IOException {JwtAccessTokenConverter jwtAccessTokenConverter = new MyJwtAccessTokenConverter(userDetailService);KeyStoreKeyFactory keyStoreKeyFactory =new KeyStoreKeyFactory(new ClassPathResource("keystore.jks"), "21098jun".toCharArray());KeyPair keyPair = keyStoreKeyFactory.getKeyPair("mykeyalias");jwtAccessTokenConverter.setKeyPair(keyPair);return jwtAccessTokenConverter;}

gateway与oauth2.0的交互

oauth2.0的提供的资源服务验签插件需要rpc,那么就需要在gateway解决rpc的问题。当然啦,也可以不用解决这个问题,直接用spring的feign调用实现token验签。
数字证书验签方式算是一个解决oauth2.0交互的思路。

结束语

oauth2.0属于集中的鉴权方式,方便做一个公司级别的统一授权,但是带来耦合性问题,token去中心化恰巧涉及到安全问题,所以采用数字证书算是将两者绑定在一起,实现oauth2.0的集中授权,数字证书验签解耦。

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

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

相关文章

鸿蒙Next学习-监听指定页面显示/页面生命周期

自定义组件监听页面生命周期 使用无感监听页面路由的能力,能够实现在自定义组件中监听页面的生命周期。 // Index.ets import { uiObserver, router, UIObserver } from kit.ArkUI;Entry Component struct Index {listener: (info: uiObserver.RouterPageInfo) &g…

wordpress收录好好的换了个模板就突然不收录了

wordpress收录好好的换了个模板就突然不收录了,而且原来收录的也给删除了,是模板的问题吗? 一般来说,不是模板的问题,是突然换模板,或添加大量内容、导致数据结构等方面变化,被搜索引擎当作弊的处罚了。要…

solon 集成 kafka-clients

使用 kafka-clients 原本是比较简单的事情。但有些同学习惯了 spring-kafka 后&#xff0c;对原始 java 接口会陌生些。会希望有个集成的示例。 <dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><ve…

Android开发,使用ViewPager2实现自动轮播图

文章目录 1. build.gradle添加依赖&#xff1a;2. AndroidManifest.xml中添加网络访问权限3. 编写 布局文件4. 编写Banner适配器5. 自定义Banner视图6. 定义圆点指示器的drawable资源7. 在需要使用轮播图中的Activity中使用8. 运行效果图9. 视频教程 在Android项目程序设计中&a…

Oracle DataGuard启动与关闭顺序

在Oracle Data Guard环境中&#xff0c;启动和关闭数据库的顺序非常重要&#xff0c;以确保数据的一致性和最小化服务中断。以下是针对主库&#xff08;Primary Database&#xff09;和备库&#xff08;Standby Database&#xff09;启动与关闭的标准步骤。 启动顺序 1. 启动…

JavaScript 中基元类型与引用类型的解析

文章目录 基元类型Undefined 类型Null 类型Boolean 类型Number 类型String 类型Symbol 类型 类型详解对象&#xff08;Object&#xff09;数组&#xff08;Array&#xff09;函数&#xff08;Function&#xff09;日期&#xff08;Date&#xff09;、正则表达式&#xff08;Reg…

切比雪夫不等式:方差约束下的概率估计

切比雪夫不等式&#xff1a;方差约束下的概率估计 背景 在概率分析中&#xff0c;切比雪夫不等式是一个常用的工具&#xff0c;它通过引入随机变量的 方差信息&#xff0c;给出了偏离均值的概率界限。这一不等式是对 马尔科夫不等式 的自然扩展&#xff0c;结合了更丰富的分布…

企业网双核心交换机实现冗余和负载均衡(MSTP+VRRP)

MSTP&#xff08;多生成树协议&#xff09; 通过创建多个VLAN实例&#xff0c;将原有的STP、RSTP升级&#xff0c;避免单一VLAN阻塞后导致带宽的浪费&#xff0c;通过将VLAN数据与实例绑定&#xff0c;有效提升网络速率。 VRRP&#xff08;虚拟路由冗余协议&#xff09; 用…

Socket编程-tcp

1. 前言 在tcp套接字编程这里&#xff0c;我们将完成两份代码&#xff0c;一份是基于tcp实现普通的对话&#xff0c;另一份加上业务&#xff0c;client输入要执行的命令&#xff0c;server将执行结果返回给client 2. tcp_echo_server 与udp类似&#xff0c;前两步&#xff1…

深入浅出云计算 ---笔记

这是博主工作闲时的一些日常学习记录&#xff0c;有些之前很熟悉的&#xff0c;但工作中不常用&#xff0c;慢慢就遗忘了&#xff0c;在这里记录&#xff0c;也是为了激励自己坚持复习&#xff0c;如果有能帮到你&#xff0c;那我将感到非常的荣幸~ 快速到达↓↓↓ IaaS篇>&…

14 设计模式值观察者模式(书籍发布通知案例)

一、观察者模式定义 在日常开发中&#xff0c;我们经常会遇到一种场景&#xff1a;某个对象的状态发生变化时&#xff0c;需要通知并更新其他相关对象。这时&#xff0c;观察者模式便成为了解决问题的有效方案。观察者模式是一种常见的设计模式&#xff0c;它允许一个对象的状态…

15分钟训练数字人MimicTalk

只需15分钟&#xff0c;就能训练高质量&#xff0c;个性化数字人大模型。由浙江大学与字节跳动联合推出MimicTalk算法&#xff0c;目前已开源。 在外表和说话风格上和真人相似。将通用3D数字人大模型适应到单个目标人&#xff0c;采用动静结合的高效微调方案&#xff0…

c++高级篇(四) ——Linux下IO多路复用之epoll模型

IO多路复用 —— epoll 前言 在之前我们就已经介绍过了select和poll,在作为io多路复用的最后一个的epoll,我们来总结一下它们之间的区别: a select 实现原理 select 通过一个文件描述符集合&#xff08;fd_set&#xff09;来工作&#xff0c;该集合可以包含需要监控的文件…

【kettle】mysql数据抽取至kafka/消费kafka数据存入mysql

目录 一、mysql数据抽取至kafka1、表输入2、json output3、kafka producer4、启动转换&#xff0c;查看是否可以消费 二、消费kafka数据存入mysql1、Kafka consumer2、Get records from stream3、字段选择4、JSON input5、表输出 一、mysql数据抽取至kafka 1、表输入 点击新建…

docker-compose部署skywalking 8.1.0

一、下载镜像 #注意 skywalking-oap-server和skywalking java agent版本强关联&#xff0c;版本需要保持一致性 docker pull elasticsearch:7.9.0 docker pull apache/skywalking-oap-server:8.1.0-es7 docker pull apache/skywalking-ui:8.1.0二、部署文件docker-compose.yam…

用Python开发一个经典贪吃蛇小游戏

Python 是开发小游戏的绝佳工具,借助第三方库,如 pygame,我们可以快速开发一个经典的贪吃蛇游戏。本篇将介绍如何用 Python 实现一个完整的贪吃蛇小游戏。 一、游戏设计 1.1 游戏规则 玩家通过方向键控制贪吃蛇移动。贪吃蛇吃到食物后会变长,同时得分增加。如果贪吃蛇撞到…

在 MacOS 上为 LM Studio 更换镜像源

在 MacOS 之中使用 LM Studio 部署本地 LLM时&#xff0c;用户可能会遇到无法下载模型的问题。 一般的解决方法是在 huggingface.co 或者国内的镜像站 hf-mirror.com 的项目介绍卡页面下载模型后拖入 LM Studio 的模型文件夹。这样无法利用 LM Studio 本身的搜索功能。 本文将…

vue中.sync修饰符的用法

一、什么是.sync修饰符 在Vue.js中&#xff0c;.sync 修饰符用于创建一个双向绑定的 prop。它使子组件能够更新父组件的 prop 值&#xff0c;实现父子组件之间的双向数据同步。具体来说&#xff0c;.sync 修饰符主要有以下几个功能&#xff1a; 简化双向绑定&#xff1a; 使用…

【附源码】基于环信鸿蒙IM SDK实现一个聊天Demo

项目背景 本项目基于环信IM 鸿蒙SDK 打造的鸿蒙IM Demo&#xff0c;完全适配HarmonyOS NEXT系统&#xff0c;实现了发送消息&#xff0c;添加好友等基础功能。代码开源&#xff0c;功能简洁&#xff0c;如果您有类似开发需求可以参考。 源码地址&#xff1a;https://github.c…

SHELL----正则表达式

一、文本搜索工具——grep grep -参数 条件 文件名 其中参数有以下&#xff1a; -i 忽略大小写 -c 统计匹配的行数 -v 取反&#xff0c;不显示匹配的行 -w 匹配单词 -E 等价于 egrep &#xff0c;即启用扩展正则表达式 -n 显示行号 -rl 将指定目录内的文件打…