对接第三方接口鉴权

news2024/9/25 23:25:23

我们知道,做为一个web系统,少不了要调用别的系统的接口或者是提供接口供别的系统调用。从接口的使用范围也可以分为对内和对外两种,对内的接口主要限于一些我们内部系统的调用,多是通过内网进行调用,往往不用考虑太复杂的鉴权操作。但是,对于对外的接口,我们就不得不重视这个问题,外部接口没有做鉴权的操作就直接发布到互联网无疑是在这里插入图片描述
而这不仅有暴露数据的风险,同时还有数据被篡改的风险,严重的甚至是影响到系统的正常运转!在这里插入图片描述
接下来,我将结合实际代码,分享一套接口鉴权实践方法。

方案一 appIdsecret

接口鉴权?那还不简单,给每个应用下发一个appIdsecret,接口调用方每次携带appIdsecret调用接口。但是这样真的安全吗?每次调用都要传输密码,很容易被截获。

方案二 appIdsecret+token

调用方根据接口的URLappIdsecret组合在一起,然后加密生成一个token,服务端接收到对应请求之后按照同样的方法生成一个token,然后校验token的 正确性。但是这种方式每个url拼接上appIdsecret生成的token是一样的,未授权系统截获后还是可以通过重放的方式,伪装成认证系统,调用这个接口。

方案三 appIdsecret+token+时间戳

同方案二类似,token的生成过程中在加入时间戳,校验token正确性之前先校验时间戳是否在一定时间窗口内(比如说1分钟),如果超过一分钟,直接拒绝请求,通过后再校验token

方案四 appId+token+时间戳

相对方案二,方案三的方法相对已经有很大提升了(同样参数不能无限制调用),但是仔细一想,还是有问题,攻击者截获请求以后,还是可以在一定时间窗口内通过重放攻击的方式发送请求。那么,有没有终极大招呢?

实际上,攻防之间没有绝对的安全,我们能做的是尽量提高攻击者的成本。这个方案虽然还有漏洞,但是实现起来简单,而且不会过度影响接口性能。权衡安全性、开发成本以及对系统性能的影响,这个方案算是比较合理的一个了。接下来,我将通过java代码一步一步实现这个鉴权功能。
在这里插入图片描述
首先,抽出一个AuthToken.java,定义了生成AuthToken以及校验token是否过期的方法

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

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

相关文章

虹科干货 | CAN与CAN FD总线常见故障诊断及解决

全文导读:CAN总线凭借着可靠、实时、经济和灵活的优势,在汽车、工业等领域得到广泛应用,并逐渐普及到电池储能、医疗器械、智能大楼等应用场景中。随着CAN总线在越来越多领域得到应用,CAN总线测试的需求也逐渐增多。本文主要总结了…

c++之内联函数

要学习内联函数(inline),首先我们要复习一下宏的缺点 我们的目的就是用内联函数去替代宏。 内联函数类似与宏的优点,但是克服了宏的缺点。(内联函数编译器通过宏实现了内联函数) 但是一般只适合小函数&…

车载网关产品解析(附:车载网关详细应用案例及部署流程)

5G车载网关是一款功能强大的工业级无线通讯设备。它集成了4G/5G双模网络模块、M12接口设计、强大的路由和安全功能等特性,可以为车载和移动应用提供稳定可靠的无线数据连接。 链接直达:https://www.key-iot.com/iotlist/sv900.html ### 产品特性 5G车载网关最大的…

一百九十八、Java——IDEA项目中有参构造、无参构造等快捷键(持续梳理中)

一、目的 由于IDEA项目中有很多快捷键,可以很好的提高开发效率,因此整理一下 二、快捷键 (一)快捷键生成public static void main(String[] args) {} 快捷键:psvm (二)快捷键在test中创建cn…

一文6个步骤带你实现接口测试入门

一、接口测试概述 1 什么是接口测试: 接口测试是测试系统组件间交互的一种测试。接口测试主要用于检测外部系统与系统之间,内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑…

在线客服源码系统+完全开源可二开 带完整搭建教程

在线客服源码系统是一种基于互联网技术的自动化客户服务软件。它通过网页、即时通讯等多种方式,实现企业与客户之间的即时互动和信息交流。该系统具有多种功能,如在线聊天、文件传输、消息管理、用户信息存储等。选择合适的在线客服源码系统,…

Spring两大核心之一:AOP(面向切面编程)含设计模式讲解,通知类型切点;附有案例,实现spring事务管理

模拟转账业务 pom.xml <dependencies><!--spring--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.29</version></dependency><!--lombok-->…

Jmeter 测试 MQ 接口怎么做?跟我学秒变大神!

MQ(message queue)消息队列&#xff0c;是基础数据结构 先进先出 的一种典型数据结构。一般用来解决应用解耦&#xff0c;异步消息&#xff0c;流量削锋等问题&#xff0c;实现高性能&#xff0c;高可用&#xff0c;可伸缩和最终一致性架构。 MQ 主要产品包括&#xff1a;Rabb…

ChatGLM3 模型学习与实战

文章目录 一&#xff0c;说明二、前言1. 背景2. 系统说明3. 相比于ChatGLM2-6B进行的 性能升级4. 模型列表 三、环境搭建1. 下载代码2 构建环境3 安装依赖4. 大模型下载方式4.1 安装 lfs 方便本地下载 ChatGLM2-6B 大模型4.2 Hmodelscop 上手动下载模型及其文件 【推荐】4.3 Hu…

大中小企业自招人力及劳务派遣全行业招聘抖音直播招聘效果佳

在抖音平台上&#xff0c;企业或者人力资源公司可以通过直播的形式&#xff0c;将职位以视频直播的方式展现出来。通过抖音直播招聘报白&#xff0c;企业或者人力资源公司可以利用抖音的短视频流量红利&#xff0c;触达到每天超过8亿的活跃用户群体。这样可以提高岗位信息的曝光…

python爬取百度图片上的图像

from fake_useragent import UserAgent import requests import re headers {"User-agent": UserAgent().random, # 随机生成一个代理请求"Accept-Language": "zh-CN,zh;q0.9,en;q0.8,en-GB;q0.7,en-US;q0.6","Connection": "k…

大厂面试题-JVM如何判断一个对象可以被回收

在JVM里面&#xff0c;要判断一个对象是否可以被回收&#xff0c;最重要的是判断这个对象是否还在被使用&#xff0c;只有没被使用的对象才能回收。 1. (如图)引用计数器&#xff0c;也就是为每一个对象添加一个引用计数器&#xff0c;用来统计指向当前对象的引用次数&…

精美UI强大娱乐功能组合微信小程序源码

这是一个多娱乐功能的小程序&#xff0c;功能炒鸡多&#xff0c;自行去体验把。 具体由以下功能组合: 网易云在线音乐(在线播放音乐和网易云功能界面一样) 外卖CPS(外卖平台优惠劵) 打车CPS(打车平台优惠劵) 头像功能(多分类头像,另外还支持姓氏头像制作) 图片加水印 表…

办公软件有哪些,办公软件哪个好

办公软件是指为办公和生产工作而设计的软件&#xff0c;包括文字处理、表格处理、演示文稿、电子邮件、日历、计划等各种应用软件。办公软件可以提高工作效率&#xff0c;让人们更加便捷地完成各种工作任务。随着科技不断发展&#xff0c;办公软件也在不断更新和完善&#xff0…

Instagram网红经济发展迅速!该如何紧抓这个流量

根据数据显示&#xff0c;网红营销市场规模在短短五年时间内从2016年的17亿美元增长至2022年的164亿美元&#xff0c;累计增速超过了712%。未来&#xff0c;有专家预计该市场预计将进一步增长&#xff0c;将在2023年突破210亿美元。这种惊人的增长趋势源于社交媒体的快速发展以…

[迁移学习]UniDAformer域自适应全景分割网络

原文的标题为&#xff1a;UniDAformer: Unified Domain Adaptive Panoptic Segmentation Transformer via Hierarchical Mask Calibration&#xff0c;发表于CVPR2023。 一、概述 域自适应全景分割是指利用一个或多个相关域中的现成标注数据来缓解语义分割数据标注复杂的问题。…

python环境部署

一、源码安装 1.安装依赖软件包 安装开发工具包 [rootlocalhost ~]# yum groupinstall "Development Tools" -y [rootlocalhost ~]# [rootlocalhost ~]# yum -y install zlib-devel bzip2-devel openssl-devel sqlite-devel readline-devel libffi-devel官网下…

pytorch打印模型结构和参数

两种方式 当我们使用pytorch进行模型训练或测试时&#xff0c;有时候希望能知道模型每一层分别是什么&#xff0c;具有怎样的参数。此时我们可以将模型打印出来&#xff0c;输出每一层的名字、类型、参数等。 常用的命令行打印模型结构的方法有两种&#xff1a; 一是直接prin…

[已解决]大数据集群CPU告警问题解决

大数据集群CPU告警问题解决 问题 6台机器的 CPU总是连续超过90% 思路 调整yarn资源 常见的是调整容器虚拟 CPU 内核 yarn.nodemanager.resource.cpu-vcores 根据集群具体的CPU核数规划 我另外调整了两个参数 最小容器虚拟 CPU 内核数量 yarn.scheduler.minimum-allocati…

中科院上高院,协鑫,和数“能源数字化智能管控”合作项目开启

10月27日&#xff0c;上海和数软件有限公司与协鑫综合能源服务有限公司、中国科学院上海高等研究院签署了《关于“能源数字化智能管控”开发与应用框架合作协议》。 这也标志着新疆协鑫智慧能源有限公司数字化智能提升项目——数字孪生项目正式启动。 根据协议&#xff0c;三方…