首页 文章 精选 留言 我的

精选列表

搜索[api设计],共10010篇文章
优秀的个人博客,低调大师

第三方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

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

Spring

Spring

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

Rocky Linux

Rocky Linux

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

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册