第三方token过期监控及刷新机制

article/2025/6/29 6:46:38

背景

信息系统随着业务发展的多样化及场景的拓展,需要接入越来越多的第三方系统,部分收费的第三方服务都会按照合同约定给用户提供对应的应用授权账户,授权账户包含并不仅限于账号/密码/AppKey/AppSecret/MerchantId,但是从系统安全角度出发,为了保护授参数的安全性和系统的稳定性,服务商都有针对账号进行流量控制/服务降级/关键安全信息定期更新等机制,来确保双方系统稳定及安全,本次说到的Token过期就是其中的一种保护账号安全的机制

现状

各第三方服务token过期时间

针对目前的一些第三方服务,目前渣渣所了解到的是,拼多多的部分接口授权token是15天过期时间,蘑菇街/蘑菇街小店的token过期时间是7天,京东/淘宝等是一年的过期时间。

存在的问题点

有朋友会说,这个问题很好处理,token过期那就刷token就是的;是的,对于一个开发来说,刷token很简单,按照官方的文档操作就可以了,但是现在大多数的企业都存在以下场景,致使刷token的过程效率比较低,沟通成本却很高,从开发和运营角度去看

开发角度
  • 用来刷token的账号一般都是业务账号,开发需要走流程才能获取到。
  • 此类账号一般异地登陆或者换PC登录都需要手机号验证,沟通成本和及时性很难保障
  • 操作2分钟,沟通一小时,线上问题迫在眉睫
运营角度
  • 大多数运营不知道这个系统中存在这个问题,只在线上出问题后,开发才反馈有此问题
  • 我有账号,我不知道怎么操作,操作的流程都是一串串代码,我不会
  • 线上出问题了,需要快速恢复业务,我直接去开发工位去处理

以上问题总结起来就是,有权限的不会处理,会处理的没权限,部分公司的做法就是运营把账号给到开发,并提供手机号验证码;开发愿意去接这个么?大多数情况不愿意,因为此类账号里面一般都会有运营的数据或者一些销售数据,比较敏感,例如天猫和京东的账号,是有发优惠卷和上线营销活动的权限的。

处理方案

开发侧
  • 在token过期前提醒运营进行刷新操作,一般是过期前一周内(有效期较短的过期前3天,一般有效期比较短的都不需要验证账号)
  • 开发业务操作页面,方便运营在自研系统中进行操作
  • 页面简历tips,提示具体的每一步操作
运营侧
  • 注意查收特定邮箱的预警邮件,处理完成后回复邮件及抄送人
  • 操作过程中有问题需要开发协助及时沟通
具体落地方案(以京东平台为例)
开发建立第三方服务表(第三方服务信息管理)

存储关键信息:
平台名称/业务名称/AppKey/AppSecret/Token/RefreshToken/EndDate等关键参数

了解刷新流程

京东平台授权刷新流程
以下内容转发,可以直接去
京东授权刷新流程查看原汁原味的

1、请求入口地址
1)获取授权码(code)
https://open-oauth.jd.com/oauth2/to_login
2)获取访问令牌(access_token)
https://open-oauth.jd.com/oauth2/access_token
注意:如授权账号(商家为主账号)修改密码则授权码(Access token)随之失效,需重新授权。
2、授权操作步骤实际进行授权操作时,测试的数据 app_key、app_secret、redirect_uri 均需要根据自己创建的应用实际数据给予替换,不能拿示例中给出的值直接进行测试,以免影响实际测试效果。1)拼接授权url拼接用户授权需访问url ,示例及参数说明如下:
https://open-oauth.jd.com/oauth2/to_login?app_key=XXXXX&response_type=code&redirect_uri=XXXXX&state=20180416&scope=snsapi_base
2)引导用户登录授权引导用户通过浏览器访问以上授权url,将弹出登录授权页面。用户输入账号、密码点“登录”按钮,即完成授权流程。在PC浏览器里,该页面支持授权用户京东APP扫码登录;若授权用户已经在该浏览器中登录京东,则可实现一键授权登录。
3)获取code上图页面,若用户点“登录”按钮后,开放平台会跳转到指定的redirect_uri并多添加两个参数code和state参数(浏览器地址栏),应用可以获取并使用该code去换取access_token;
返回示例:
redirect_uri?code=CODE&state=STATE
说明:可发布服务市场(fw.jd.com)的应用,在应用上线后,如购买应用的用户,通过"我的服务--立即使用”访问(下图),系统会自动跳到授权页面(因此这种方式访问应用的,不需要拼接url),只需注意获取code即可。同时返回code时,还会返回通过state传递订购服务相关的信息;
注意:state中如果有“+”号,因浏览器交互的原因,会出现“+”号替换成空格的现象,导致授权报错,如果出现此种情况,请把的state 中的空格再替换成“+”号,state后面的是经过base64编码,使用者可以通过收费项目编码或者版本号来指定自己软件对应的服务并可以通过接口进行验证参数的正确性,反编码后内容如下:{"jos_parameters":
{"app_key": "CB69F1769C4B110D010D128E41030C94","end_date": 1469289600000,"item_code": "FW_GOODS-233232-1","source": "JM","user_name": "sop_order","version_no": 1}
}

大体流程如下图:
在这里插入图片描述

建立监控机制

上述表中我们有存储字段EndDate,通过建立定时调度去扫描此表,判断当前时间与EndDate之间的关系,确定刷否需要刷新token,不需要则无提示,需要刷新时可通过邮件/钉钉/企业微信等方式通知相应人员;注意此处最好发送给操作人员,抄送给相关支持人员和开发

操作平台设计

页面简图:
页面可选模式:列表展示单行修改/平台名称+业务模块下拉选择修改
在这里插入图片描述

  1. 建立单行表单,可选择平台名称/业务名称,触发授权按钮,服务拼接授权参数访问第三方登陆平台,此处需要保留原页面。
  2. 用户在页面上获取到code后,将code填充到表单中的授权code栏目中并点击确认授权按钮,应用发起授权请求,并从返回的结果中解析出对应的end_date/access_token/refresh_token等字段
  3. 将以上信息更新到表中维持之后的监控判断

写在最后

以上方案,只有在第一次处理时需要开发接入,原则上后续的流程只是对此功能的维护。
另外有些企业可能考虑到将这些参数存在表中,安全性可能会有问题,此类数据可以考虑关闭开发访问权限。


http://chatgpt.dhexx.cn/article/yyIOja4G.shtml

相关文章

vue token过期后自动刷新token

在系统登录后,后端返回一个token,和refreshToken。每次接口请求的时候都会携带这个token,但是这个token一般是有过期时间的,假设过期时间为半小时,你半小时内没有调接口。半小时后你再调接口,会报401错误&a…

JAVA开发(token过期续期)

一、需求背景: 在使用token进行登录的过程中,如果token过期了,需要重新输入用户名和密码登录,这种体验肯定是不好的,因为如果一直在使用系统,系统应该一直能够保持登录状态,而不是用着用着就突然…

token系统讲解及过期处理

token系统讲解及过期处理 1. token是什么?用来做什么2. token存储在哪?过期了怎么办?3. 请求拦截与响应拦截执行时机(面试重点)4. 解决token过期方案一: 重新登录5. 方案二:使用 refresh_token…

前端token知识梳理:token如何存储?token过期如何处理?如何无感知刷新token?

在前后端是以token(令牌)的形式交互的,既然是token,是有过期时间的(为了接口数据的安全, 服务器的token不会设置太久,根据需要一般是1-7天),没有一个token是永久的&…

处理token过期的问题,无感知刷新token

401错误的场景 有如下两种情况会出现401错误: 未登陆用户做一些需要权限才能做的操作,代码会报出401错误。这种情况下,应该让用户回到登陆页。登录用户的token过期了 整体目标是:通过axios响应拦截器来处理401问题。 理解toke…

前端怎么判断token过期或无token问题

有如下两种情况会出现401错误: 未登陆用户做一些需要权限才能做的操作(例如:关注作者),代码会报出401错误。这种情况下,应该让用户回到登陆页。登录用户的token过期了 ( token会有有效期(具体是…

react中 token过期,如何处理?

思路:首先在request.js中的响应拦截器这块写token失效的提示,然后再让它进行清空token和路由跳转 第一步:在request.js文件中 导入 import store from /store import { logout } from /store/actions/login 第二步:在响应拦截器…

token 过期解决

vue如何在token过期之后跳转到登录页面,且不影响其他无需携带token的接口数据访问 事情是这样的,最近做了一个类似于商城的项目。本来测试是没有问题的,后来过了大概三四天的时间没有在浏览器中打开过,再打开以后,在未…

前端token知识梳理:token如何存储?token过期如何处理?如何无感刷新token?

在前后端是以token的形式交互,既然是token,那么肯定有它的过期时间(为了接口数据的安全,服务器的token一般不会设置太长,根据需要一般是1-7天的样子),没有一个token是永久的,永久的token就相当于一串永久的…

token过期怎么办 无感刷新token

(1)可以通过响应拦截器或者全局前置守卫强制跳转登录页 // 全局前置守卫 router.beforeEach((to, from) > {let token sessionStorage.token;if (token) {return true} else {return { name: Login, query: { redirect: to.fullPath } };} }) // 添…

关于 Token 过期问题的两种解决方案

对于token过期,我们有两种方案: 方案一:当我们操作某个需要token作为请求头的接口时,返回的数据错误error.response.status 401,说明我们的token已经过期了。 我们希望当响应返回的数据是401身份过期时,让…

Latex 符号(Symbols)

Latex符号广泛用于数百个类别的不同主题中。对于数学或其他学科中使用的每个符号,将使用相应的命令。本主题将为您提供有关符号的详细概念和说明,以及以哪种方式可以使用所有符号。 使用标准文本,您可以使用任何符号。这种方法不仅节省了精力…

Latex特殊符号汇集

原文链接:https://blog.csdn.net/ying_xu/article/details/51240291 这段时间用Latex很多,常常需要查阅相关特殊的符号,这里做一个整理,也方便大家查阅。 摘自:《一份不太简短的LATEX2介绍》或112分钟学会LATEX2 原…

(13.1)Latex符号、公式及伪代码

文章目录 一、符号大全和小工具1、符号大全2、小工具(1)图片转Latex(2)在线Latex公式编辑 二、公式格式三、伪代码四、注意事项1、符号宏包2、颜色宏包3、换段未缩进4、单引号和双引号 一、符号大全和小工具 1、符号大全 Latex …

LaTex常见数学符号与示例

在写文档或者博客过程中,数学公式是最难表示的,比如根号,下标号,分号,还有绝对值的表示,复杂一些的比如矩阵的表示,积分的表示,求和公式。 LaTex提供了丰富的表示方法,用…

Latex数学符号对应表

Latex数学符号对应表 - 叮叮当当sunny - 博客园 目录 1. 希腊字母2. 运算符符号3. 关系符号4. 箭头符号5. 括号符号6. 其他符号7. MATLAB 回到顶部 1. 希腊字母 字母实现字母实现αα\alphaAA\Alphaββ\betaBB\Betaγγ\gammaΓΓ\Gammaδδ\deltaΔΔ\Deltaϵϵ\epsilon…

LateX各种命令符号

函数、符号及特殊字符 声调 语法效果语法效果语法效果\bar{x}\acute{\eta}\check{\alpha}\grave{\eta}\breve{a}\ddot{y}\dot{x}\hat{\alpha}\tilde{\iota} 函数 语法效果语法效果语法效果\sin\theta\cos\theta\tan\theta\arcsin\frac{L}{r}\arccos\frac{T}{r}\arctan\frac{L}{…

Latex特殊符号大全(高清)

Latex符号大全 转载内容供自己阅读 原文:Latex特殊符号大全(高清)

Latex常见符号对照表

摘要: Latex可以很方便的利用命令来生成各式各样的特殊符号. 这里根据官方的文档将这些常见符号列出, 以备查用. B.1 希伯来和希腊字母(Hebrew and Greek letters) 希伯来语: 希腊语: 数学表达式中常常用下面的这些符号, 分小写/大写 B.2 二元关系符(Binary relations) …