首页 文章 精选 留言 我的

精选列表

搜索[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

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

腾讯云软件源

腾讯云软件源

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

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

用户登录
用户注册