首页 文章 精选 留言 我的

精选列表

搜索[API集成],共10000篇文章
优秀的个人博客,低调大师

第三方API对接如何设计接口认证?

一、前言 在与第三方系统做接口对接时,往往需要考虑接口的安全性问题,本文主要分享几个常见的系统之间做接口对接时的认证方案。 二、认证方案 例如订单下单后通过 延时任务 对接 物流系统 这种 异步 的场景,都是属于系统与系统之间的相互交互,不存在用户操作;所以认证时需要的不是用户凭证而是系统凭证,通常包括 app_id 与 app_secrect。 app_id与app_secrect由接口提供方提供 2.1. Baic认证 这是一种较为简单的认证方式,客户端通过明文(Base64编码格式)传输用户名和密码到服务端进行认证。 通过在 Header 中添加key为 Authorization,值为 Basic 用户名:密码的base64编码,例如app_id为和app_secrect都为 zlt,然后对 zlt:zlt 字符进行base64编码,最终传值为: Authorization: Basic emx0OnpsdA== 2.1.1. 优点 简单,被广泛支持。 2.1.2. 缺点 安全性较低,需要配合HTTPS来保证信息传输的安全 虽然用户名和密码使用了Base64编码,但是很容易就可以解码。 无法防止 重放攻击 与 中间人攻击。 2.2. Token认证 使用 Oauth2.0 中的 客户端模式 进行Token认证,流程如下图所示: 使用Basic认证的方式获取access_token之后,再通过token来请求业务接口 2.2.1. 优点 安全性相对 Baic认证 有所提升,每次接口调用时都使用临时颁发的 access_token 来代替 用户名和密码 减少凭证泄漏的机率。 2.2.2. 缺点 依然存在 Baic认证 的安全问题。 2.3. 动态签名 在每次接口调用时都需要传输以下参数: app_id 应用id time 当前时间戳 nonce 随机数 sign 签名 其中sign签名的生成方式为:使用参数中的 app_id + time + nonce 并在最后追加 app_secrect 的字符串进行md5加密,并全部转换成大写。 如果需要实现参数的防篡改,只需把接口所有的请求参数都作为签名的生成参数即可 2.3.1. 优点 安全性最高 服务端使用相同的方式生成签名进行对比认证,无需在网络上传输 app_secrect。 可以防止 中间人攻击。 通过 time 参数判断请求的时间差是否在合理范围内,可防止 重放攻击。 通过 nonce 参数进行幂等性判断。 2.3.2. 缺点 不适用于前端应用使用,js源码会暴露签名的方式与app_secrect 扫码关注有惊喜!

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册