架构师谈三方接口签名验签简易设计与实现


作者:伊丽莎白菜
链接:https://www.jianshu.com/p/1ed65b2e99f3

写在前面

  1. 接口安全防护是个永恒的话题,提供给前端的接口需要登录,提供给服务的接口(下文简称”三方接口“)也需要鉴权;

  2. 当前大环境下,http restful(甚至不restful)盛行,因为简单。性能上,额…至少比soap webservice好;

  3. 对于三方接口鉴权,规范的协议有不少,比如OAUTH2, 但完整的OAUTH2协议对客户端有着苛刻的要求,阉割的OAUTH2协议看起来好像没啥用(我个人这么觉得);

  4. 除了鉴权,还有一个难点是防劫持。如果被劫持了,包括鉴权在内的所有请求都不再可信;

  5. 防劫持的唯一可靠措施似乎是https,然而总有一些网站没有https,包括一些从来不会被攻击,但是天天报漏洞需要修复的头疼系统;

  6. 即使如此,也不能破罐子破摔,多加点防护,提升点攻击成本,至少一眼看起来没啥问题。这样就差不多了。

整体设计

1.1 大体思路

  1. 服务端维护客户服务列表,仅提供服务给已知的客户端;

  2. 客户端持有两个密钥, 一个是对称加密的密钥,一个是非对称加密的公钥,两个密钥同时泄露请打110. 客户端发出请求前,使用公钥加密少量信息(例如客户端标识等),使用对称密钥加密请求体,最后使用加密后的请求体加盐(例如两个密钥组合起来)生成摘要,签名由非对称加密后的字符串拼接摘要组成

  3. 服务端接收到请求后,查询客户服务列表获取密钥等信息,对比摘要后,私钥解密对比签名的剩余部分,最后对称解密。

1.2 详细设计

1.2.1 服务属性
属性名称 中文释义 备注
clientId 服务唯一标识
clientSecret 对称密钥
privateKeyServer 服务端私钥 仅服务端持有
publicKeyServer 服务端公钥
1.2.2 客户端处理流程

程序参与方:

  • Invoker: 调用者,即程序引用方;

  • RpcEncrypt: 程序入口;

  • Signature: 签名接口,客户端签名和服务端验签等逻辑在这里实现;

  • Digest: 摘要接口,默认实现为HMAC;

  • Asymmetric: 非对称加密接口,默认实现为RSA;

  • Symmetric: 对称加密接口,默认实现为AES;

  • Storage: 存储接口,默认实现为内存。

架构师谈三方接口签名验签简易设计与实现
1.2.3 服务端端处理流程
架构师谈三方接口签名验签简易设计与实现
1.2.4 程序设计
架构师谈三方接口签名验签简易设计与实现

代码实现

  • github
    https://github.com/jiashuaizhang/rpc-encrypt

  • gitee
    https://gitee.com/cheapCabbage/rpc-encrypt

--完--

读到这里说明你喜欢本公众号的文章,欢迎 置顶(标星)本公众号 架构师指南,这样就可以第一时间获取推送了~

本公众号 架构师指南,后台回复:架构师,领取2T学习资料 !
1. 后端架构师技术大全(69个点)
2. 架构师如何设计权限系统?
3. 我怎么才能成为一个架构师 ?
4. 架构师从0搭建一套订单系统!

架构师谈三方接口签名验签简易设计与实现

架构师谈三方接口签名验签简易设计与实现

本篇文章来源于微信公众号:程序IT圈

原创文章,作者:software,如若转载,请注明出处:https://www.sldh123.com/6489.html

(0)
上一篇 11月 16, 2022 1:02 下午
下一篇 11月 16, 2022 1:04 下午

相关推荐

  • 分布式事务最经典的七种解决方案

    随着业务的快速发展、业务复杂度越来越高,几乎每个公司的系统都会从单体走向分布式,特别是转向微服务架构。随之而来就必然遇到分布式事务这个难题,这篇文章总结了分布式事务最经典的解决方案…

    8月 5, 2022
    590
  • 基于Spring Cloud的微服务架构分析

    Spring Cloud是一个相对比较新的微服务框架,2016年才推出1.0的release版本. 虽然Spring Cloud时间最短, 但是相比Dubbo等RPC框架, Spr…

    7月 18, 2022
    490
  • 架构师流程引擎的架构设计

    因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享 1 什么是流程引擎 流程引擎是一个底层支撑平台,是为提供流程处理而开发设计的。流程引擎和流程应用,以及应用程…

    2月 2, 2023
    300
  • 美团外卖即时物流的分布式系统架构设计

    背景 美团外卖已经发展了五年,即时物流探索也经历了3年多的时间,业务从零孵化到初具规模,在整个过程中积累了一些分布式高并发系统的建设经验。最主要的收获包括两点: 即时物流业务对故障…

    7月 12, 2022
    690
  • MySQL数据库成为瓶颈后,动态数据的查询要如何加速?

    作者:java码哥链接:https://www.jianshu.com/p/064c87b9824e 一般电商系统在完成DB主从分离和分库分表后,可支撑十几万DAU。 DB分了主库…

    9月 9, 2022
    580
  • 高性能MySQL分析

    作者:陈晨_软件五千言链接:https://www.jianshu.com/p/f0bd138bd4fe Schema与数据类型优化 选择优化的数据类型 有几个简单的原则: 更小的…

    2月 19, 2023
    350
  • Netty 如何做到单机百万并发?

    相信很多人知道石中剑这个典故,在此典故中,天命注定的亚瑟很容易的就拔出了这把石中剑,但是由于资历不被其他人认可,所以他颇费了一番周折才成为了真正意义上的英格兰全境之王,亚瑟王。 说…

    10月 27, 2022
    840
  • 架构师必须知道的 Kubernetes 架构

    原文链接:https://tinyurl.com/2p9cmhsm 控制平面组件 ETCD etcd 是一个快速、分布式、一致的键值存储,用作持久存储 Kubernetes 对象数…

    8月 30, 2022
    540
  • 架构之道:分离业务逻辑和技术细节

    1. 什么是架构? 关于架构这个概念很难给出一个明确的定义,也没有一个标准的定义。 硬是要给一个概述,我认为架构就是对系统中的实体以及实体之间的关系所进行的抽象描述。 架构始于建筑…

    9月 23, 2022
    710
  • Nacos 为什么这么强?

    1. Nacos介绍 2. Nacos注册中心实现原理分析 2.1 Nacos架构图 2.2 注册中心的原理 3. Nacos源码分析 3.1 Nacos服务注册 3.2 Naco…

    2月 19, 2023
    510

发表回复

您的电子邮箱地址不会被公开。