微服务网关API加解密组件gateway-api-encrypt

spring cloud gateway 网关路由转发及request、response的加解密处理 sygateway的介绍和使用原理请自行查阅和学习,本章内容需在对spring cloud gateway的基本的了解和一定的知识基础上进行的。附上一个可供学习的博文:SpringCloud gateway (史上最全) - 疯狂创客圈 - 博客园 需求场景: 前端对post请求的数据进行加密(主流的加密方式),后端需要解密,将接口的响应数据进行加密返回,前端解密并展示或其他操作等。出于安全性的考虑和可扩展性故使用了网关来做。 涉及到的问题: 1、request的body数据流读取只能读取一次,co 阅读详情

一、概述

gateway-api-encrypt是一款基于spring-cloud-gateway的接口加解密starter,通过SpringBoot的简单配置就能够实现各种业务场景下的接口参数校验和加解密。其中包含时间戳校验、签名校验、对称加密、非对称加密等多种功能,也能够根据白名单、黑名单配置过滤接口地址。

二、快速开始

1、引入依赖

<dependency>
    <groupId>cn.futuai.open</groupId>
    <artifactId>gateway-api-encrypt-starter</artifactId>
    <version>1.0.0</version>
</dependency>

2、配置参数

spring:
  cloud:
    gateway:
      api-encrypt:
        # 全局开关
        enabled: true
        # 加密对称密钥http header key
        encrypt-aes-key-header-key: "ek"
        # 时间戳http header key
        timestamp-header-key: "ek"
        # 签名值http header key
        sign-header-key: "sign"
        # 加密query参数key
        encrypt-param-key: "ciphertext"
        # rsa非对称加密私钥
        rsa-private-key: "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAI6VKvsus/Z0R3zvqre3gzClHJdsCVeKq89hZFFWbg5l3FNbiGZEEiuD1LL+USi5GCxeRK+xEOFTj7I/waRVb3x7V3J1N0q4nNWoZvRey0MTVaBkoHeB5tzn2ZOCBQRJnijXcO58ChcLXOTQId+zDiCBCom/A62gtH8isH4PYoZXAgMBAAECgYBpetrwNa223nDgcWFHRkCMZSmQr8D9fT37Th5rudfzWNG07RssJKGYhY9913xs9vl2IUsI+qH1P98nS9lSXE37mfOKFhfGZIUjAhMb7/w8hhuHpBXopVpUJZW0B46gfPOsrmvq+xiwlI02UYJ1ZOrfdfbvss/Gwtgrk4pMigL1OQJBANRm4mOUMwF+xUxeOLa2Aafke/iwdcxoV1k1gXmTH0B8wf08zDR7heW737YBEvsjyfEpjo7Y0kGSE5zmTWNnuKUCQQCr2XuZeJLqq6etq7IhboPAx8E2xgfOY/hgKPr9IvM8gYee628YhyOynIhOVFGxaf7dMH9eZ1P6jAbvsgm+mFZLAkEAyY0btJyTzg5q0G30aUTKy3OgRDvGfIJiqM+CHkiCdmIsfs5rhD3WsEqYHZBlX5T1cvgZQ+nxkrE4FUHhG7v31QJAYJZ9TNYjJTjTpt5A4V9/OAROCZ4mVw+DU3DVGR/ivJhFBMJpD80s+D/YsMXdoKzlraaLgCDtZ336jBByP6jZnwJBAIGUnbs7eRLcXzlbORdKC/EfkDYS2rrXLFvQhehT7Y8dKHLZfJElnrHB33Qd8R8WP0PsPU6D7EWNU2zVNK1EDxY="
        # 检测模式
        check-model:
          # 模式
          model: black_list
          # 黑名单URL列表
          black-list:
            - /api/user/code
            - /api/user/code2
        timestamp:
          # 时间戳校验开关
          enable: true
          # 时间戳有效秒数
          timestamp-valid-second: 604800
        sign:
          # 签名校验开关
          enable: true
        # 请求解密配置
        request-decrypt:
          # 检测模式
          check-model:
            # 白名单模式
            model: white_list
            # 白名单URL列表
            white-list:
              - /api/user/code2
        # 响应加密配置
        response-encrypt:
          # 检测模式
          check-model:
            # 黑名单模式
            model: black_list
            # 黑名单URL列表
            black-list:
              - /api/user/code

3、自定义API异常回调管理器

@Configuration
public class ApiEncryptConfiguration {

    public ApiEncryptConfiguration() {
        // 网关回调管理器
        GatewayApiInvalidCallbackManager.setApiInvalidHandler(new ApiValidExceptionRequestHandler() {
            /**
             * 网关API校验失败,就会调用此回调
             * @param serverWebExchange serverWebExchange
             * @param throwable 异常
             * @return mono
             */
            @Override
            public Mono<ServerResponse> handleRequest(ServerWebExchange serverWebExchange,
                    Throwable throwable) {
                Response<Void> error = Response.create(ResponseTypeEnum.PARAM_VALID_ERROR);
                String errJson = JacksonMapper.toJsonString(error);
                return ServerResponse.ok().body(Mono.just(errJson), String.class);
            }
        });
    }
}

三、案例

1、配置网关服务和用户服务

网关服务:
  • 引入gateway-api-encrypt-starter和nacos依赖
  • 参考“快速开始”配置API加解密规则
用户服务
  • 引入nacos等依赖
  • 定义API接口
    @PostMapping("{path}")
    public Map<String, Object> code(@PathVariable("path") String path, @RequestParam String test1,
            @RequestParam String test2,
            @RequestParam String test3,
            @RequestBody String body) {
        Map<String, Object> map = new HashMap<>();
        map.put("path", path);
        map.put("test1", test1);
        map.put("test2", test2);
        map.put("test3", test3);
        map.put("body", body);
        log.info(String.valueOf(map));
        return map;
    }

2、发起请求

请求参数加密,响应结果加密,校验时间戳、签名

image.png

请求参数不加密,响应结果不加密,校验时间戳、签名

image.png

请求参数加密,响应结果不加密,校验时间戳、签名

image.png

请求参数不加密,响应结果加密,校验时间戳、签名

image.png

跳过所有检测

image.png

错误请求

image.png

四、原理解析

API接口加解密技术方案(参考HTTPS原理和微信支付)

五、源码

gateway-api-encrypt-starter

API网关数据安全实践:基于Nginx/OpenResty的加密解密方案 在微服务架构中,API作为服务间通信的核心枢纽,其数据安全至关重要。加密技术通过算法将明文数据转换为密文,确保传输和存储过程中的机密性与完整性。其技术价值在于构建可信的数据交换通道,防止敏感信息泄露和篡改。在API网关场景下,集中式加密解密方案能统一安全策略,降低业务系统复杂度。本文聚焦于网关代理加密模式,通过对称加密、非对称加密及国密算法的组合应用,结合密钥管理服务(KMS),在Nginx/OpenResty网关层实现请求与响应的自动化加解密处理,为高并发业务提供可落地的数据安全防护方案。 阅读详情

相关推荐

Spring Cloud Gateway实现API接口返参加密:非侵入式敏感数据保护方案

在微服务架构中,API接口作为数据交换的核心通道,其传输安全是系统设计的重中之重。敏感数据如用户手机号、身份证号在传输过程中需进行加密保护,以防泄露。传统方案往往需要在每个业务服务中嵌入加密逻辑,导致代码侵入性强、维护成本高。而通过在网关层实施统一加密,则能实现关注点分离,让业务服务专注于核心逻辑,安全合规由网关统一保障。这种方案的核心原理是利用网关作为所有流量的出入口,通过后置过滤器拦截响应,并基于配置化的JSON Path规则对指定字段进行精准加密。其技术价值在于提供了非侵入式的统一管控能力,大幅降低了

weixin_34184158的博客 1438

Gateway 接口参数加解密

Gateway网关加解密接口

邪神大人 3545

API敏感数据加解密:Spring Boot注解式实现与密钥安全管理

数据加密是信息安全领域的核心概念,旨在通过密码学算法将明文转换为不可读的密文,确保数据在传输和存储过程中的机密性。其原理主要基于对称加密(如AES)和非对称加密(如RSA)两类算法,对称加密速度快,适合处理大量数据,而非对称加密解决了密钥分发难题。在技术价值上,数据加密不仅是满足合规要求(如GDPR、等保2.0)的关键,更是构建用户信任、防止数据泄露的工程基石。在应用场景中,尤其在微服务架构和API接口交互中,如何对手机号、身份证号等敏感字段进行高效、透明的加解密成为高频需求。本文聚焦于API敏感数据保护,

weixin_34293911的博客 420

SpringCloud-Gateway实现RSA加解密

RSA主要使用大整数分解这个数学难题进行设计,巧妙地利用了数论的概念。给了RSA公钥,首先想到的攻击就是分解模数,给了的因子攻击者可以计算得到,从而也可以计算得到解密指数,我们称这种分解模数的方法为针对RSA的暴力攻击。虽然分解算法已经稳步改进,但是在正确使用RSA情况下,当前的技术水平仍远未对RSA的安全性构成威胁。RSA的公钥和私钥到底哪个才是用来加密和哪个用来解密?- 知乎。

孟孟的博客 5028

SpringBoot实现RSA+AES混合加密:零配置银行级接口安全网关

在分布式系统与微服务架构中,接口数据传输安全是保障业务可靠性的基石。RSA非对称加密与AES对称加密作为密码学领域的经典组合,通过RSA安全分发密钥、AES高效加密数据的混合模式,在性能与安全性间取得了最佳平衡。这种方案的技术价值在于实现了‘一次一密’,有效防止密钥泄露导致的批量数据风险,尤其适用于金融、支付等高安全要求的场景。本文聚焦于如何在SpringBoot框架中,利用RequestBodyAdvice与ResponseBodyAdvice扩展点,将复杂的RSA+AES加解密逻辑封装为对业务透明的统一

子夜轻风 442

PHP在线加密系统架构解析:从sg14算法到安全网关API设计

数据加密是保障Web应用安全的核心技术之一,其原理是通过特定算法将明文信息转换为不可读的密文,防止数据在传输或存储过程中被窃取或篡改。在工程实践中,一个健壮的加密系统通常需要实现算法隔离、密钥管理和输入验证等关键模块,其技术价值在于为业务提供统一、可配置且高可用的数据安全服务层。常见的应用场景包括用户敏感信息保护、API通信加密以及为遗留系统快速集成安全能力。本文以PHP在线sg14加密系统源码为例,深入剖析了如何构建一个支持自定义算法和API接口的安全网关,并探讨了如何通过分层架构和UDP协议支持来满足不

weixin_34290096的博客 359

[Spring Cloud] (6)gateway整体加解密

Spring Cloud Gateway的加解密功能为分布式系统提供了一个安全、高效、灵活的数据传输解决方案,有助于提升系统的安全性和开发效率。像数据接口,发送的参数是加密数据,接收到的都是是加密数据。但是经过前后端的拦截器处理之后,显示出的依然是正常数据。在经历前面6章的铺垫下,终于进入到了最重要的环节——拦截器功能实现,此时我们需要看的东西就比较集中而且简单了。本文网关gateway,微服务,vue已开源到gitee。像不需要加密的接口,请求参数与响应数据都是未加密的。

让人人都会写程序 3363

中小团队如何构建统一API密钥管理与访问控制方案

在微服务架构与AI应用开发中,API密钥管理是保障服务安全与高效协同的基础技术。其核心原理在于通过集中化存储与动态调度机制,实现对分布式密钥的统一管控,从而避免密钥散落带来的安全风险。从技术价值看,一套完善的密钥管理体系不仅能强化访问安全,还能实现精细化的成本监控与资源优化。在实际应用场景中,尤其在多项目、多环境的中小团队里,结合类似Taotoken大模型调度平台的工具或自建方案,可以有效解决密钥存储分散、权限控制粗放及额度消耗不可见等痛点。通过引入ACL访问控制列表等机制,团队能够为不同应用分配最小必要权

weixin_30621959的博客 926

SpringBoot 快速实现 api 加密

SpringBoot 快速实现 api 加密

zhenlong_qu的博客 809

Mini OpenClaw:面向嵌入式设备的轻量级协议网关框架

网关是物联网系统中实现多协议互通与设备身份统一的核心中间件,其本质在于协议终结、事件归一与下游适配。在资源受限的嵌入式场景(如ARM Cortex-A7、ESP32-S3)下,传统云原生网关因依赖复杂、内存占用高而难以落地。Mini OpenClaw以‘协议适配器+Redis Stream事件总线+带SLA契约的Skill沙箱’为技术主线,提供内存占用<8MB、纯Python标准库依赖、单文件热启的极简实现,天然支持miio、飞书Webhook、裸串口等异构协议的低延迟桥接与安全调度,适用于智能家居中枢、高

weixin_33686714的博客 661

SpringBoot实现RSA+AES混合加密自动接口解密方案详解

在前后端分离架构中,数据传输安全是核心议题。HTTPS解决了传输通道的安全,而端到端加密则确保数据在离开服务端前即为密文,为敏感信息提供更深层防护。其原理通常采用混合加密体系,结合非对称加密(如RSA)的安全密钥交换与对称加密(如AES)的高效数据加密,在安全与性能间取得平衡。该技术的核心价值在于将加解密逻辑与业务代码解耦,通过框架层统一处理,提升开发效率与系统可维护性。典型的应用场景包括金融支付、个人隐私数据处理等对安全性要求极高的领域。本文以SpringBoot框架为例,详细阐述了如何通过自定义注解和参

weixin_34006468的博客 405

monkey-api-encrypt终极指南:构建企业级API安全防护体系的深度解析

在数字化浪潮席卷各行各业的今天,API已成为现代软件架构的血脉与神经。然而,当API接口暴露于公网环境时,数据传输的安全性问题如同悬在开发者头顶的达摩克利斯之剑。monkey-api-encrypt作为一款专注于基于Servlet的Web框架API统一加解密操作的解决方案,为开发者提供了从数据源头到终端的全方位安全防护。 ## 问题分析:API安全防护的痛点与挑战 现代Web应用开发中,API

gitblog_00263的博客 959

App渗透 - 人脸识别登录绕过

一、APP抓包和逆向破解加密算法打开APP是一个登录框抓包后发现参数被加密了使用Jadx脱源码发现,并没有加壳也没有混淆,运气很好根据经验,先搜索Encrypt、Decrypt等关键字,发现在Common.js中有一个encryptData函数定位过去,一套加解密算法都写好了放在这放到浏览器console里面调试,果然没错二、寻找注入点首先测试了一下注入明文:{"userName":"TEST'...

渗透测试研究中心 2823

微服务拆分与DDD实战:电商系统架构演进

微服务架构通过将单体应用拆分为独立部署的服务单元,解决了传统架构下的扩展性和维护性问题。其核心原理是基于业务边界进行服务划分,采用领域驱动设计(DDD)的限界上下文概念确定服务边界。这种架构模式在电商等高并发场景中价值显著,能够实现独立扩容、技术异构和团队自治。通过事件风暴(Event Storming)工作坊识别领域事件和聚合根,结合上下文映射处理服务间协作。典型应用包括用户认证、订单管理、商品库存等核心业务域的分离,其中分布式事务处理可采用TCC或SAGA模式保证数据一致性。

weixin_30443731的博客 1000

Coze工作流实战:Coze一键生成沉浸式历史故事视频

【coze工作流实战】一键生成火爆的沉浸式历史故事视频!短短3分钟,顶替你3天的工作量!

bickys的博客 1004

微信聊天记录解密,必须是root的手机

手机上安装x-plore软件,将/data/data目录的相关EnMicroMsg.db auth_info_key_prefs.xml拷贝到/storge/emulated/0目录后才可以拷贝到电脑。路径:/data/data/com.tencent.mm/shared_prefs/auth_info_key_prefs.xml。但是是加密过的 需要解密 解密密码生成规则是手机IMEI+微信UIN md5(32位小写)后的前7位。安卓手机要root测试版本微信要7或者8版本都可以。选择message表。

venus60的专栏 1004

Traefik与Nginx深度对比:云原生网关选型与实战指南

在微服务架构中,反向代理和API网关是流量管理的核心技术组件,负责请求路由、负载均衡和安全防护。其核心原理是通过监听入口流量,根据预定义规则将请求分发到后端服务集群,实现服务发现和流量控制。从技术价值看,现代网关不仅提升系统可扩展性和可用性,还通过集中式管理简化了安全策略实施和监控集成。在容器化和动态伸缩成为主流的应用场景下,传统静态配置网关面临自动化挑战,而动态服务发现网关应运而生。本文聚焦于云原生环境中的网关选型,深入对比Traefik和Nginx在微服务治理、动态路由和自动化运维方面的差异,为容器化部

weixin_34037173的博客 438

华为Watch的ECG功能技术分析

华为Watch的ECG(心电图)功能通过硬件传感器、算法优化和医疗认证的结合,实现了对心脏电活动的监测和房颤(AFib)等心律失常的预警。采用医疗级ECG模拟前端芯片(AFE),如TI(德州仪器)的ADS1292R等,支持低噪声、高采样率(通常≥200Hz)。结合PPG(光学心率)数据交叉验证,提高检测可靠性(如ECG和PPG心率不一致时触发警告)。通过RR间期变异性判断心律是否规则,识别房颤(AFib)的典型特征(如不规则不规则心律)。结合加速度计数据,识别手臂运动导致的信号失真,动态调整算法参数。

xu_wenming的博客 6437

Spring Boot实战指南:从架构设计到微服务与避坑

Java后端开发中,Spring Boot凭借“约定优于配置”理念,成为构建企业级应用的事实标准。它通过起步依赖与自动配置简化了Spring生态整合,从分层架构到多模块工程,从统一异常处理到配置外部化,大幅提升开发效率。无论是MyBatis字段级加密、SQL超时控制,还是WebSocket实时通知,Spring Boot都提供优雅的解决方案。面对微服务与分布式架构,Spring Boot作为服务底座,结合Spring Cloud、注册中心与网关,支撑系统弹性扩展。同时,版本升级(如2.6+、3.x)带来的S

weixin_34007886的博客 349

Python 爬虫实战:科研数据库学术论文数据抓取

在科研工作中,学术论文是获取前沿知识和研究方法的重要资源。然而,手动从科研数据库中查找和整理论文信息往往耗时费力。幸运的是,Python 爬虫技术可以自动化这一过程,帮助我们高效地抓取和管理学术论文数据。本文将详细介绍如何使用 Python 爬虫技术抓取科研数据库中的学术论文数据,并进行全字段提取和文献管理,助力科研工作。

u014481728的博客 944

面经-2023-联发科MTK-数字芯片设计

面经-2023-联发科MTK-数字芯片设计

w0shishabi的博客 2943

OpenClaw框架:AI Agent多平台统一接入架构与实战

在AI应用开发中,多平台集成是一个常见且复杂的挑战,尤其是在构建企业级AI助手或智能客服时。其核心原理在于通过抽象层和标准化协议,将AI的核心推理能力与不同平台的具体实现解耦。这种架构设计的技术价值在于显著提升开发效率、降低维护成本,并增强系统的可扩展性。具体到工程实践,开发者可以利用AI Agent框架,通过统一的网关(Gateway)处理来自飞书、微信、钉钉等不同平台的消息,并将其转换为内部标准格式,再由中央智能体(Agent)进行意图识别和决策,最后调用可复用的技能(Skill)模块执行业务逻辑。这种

weixin_34189116的博客 300

Week 9 10 Neural Networks

Week 9 10 Neural Networks

金州饿霸吃不饱的博客 402

深度分析yudao-cloud企业级安全架构:5大关键风险与防护策略指南

yudao-cloud作为基于Spring Cloud Alibaba的全新Cloud版本企业级管理系统,其安全架构设计直接关系到RBAC动态权限、多租户数据隔离、工作流审批等核心业务场景的安全性。本文将从技术架构师视角,深入剖析该项目的安全风险点,并提供企业级防护策略与实施指南,帮助技术决策者构建更加安全可靠的微服务架构。 ## 风险评估框架:识别yudao-cloud核心安全漏洞 在深入分

gitblog_00465的博客 322

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

GFS Neohellenic 字体全解析:从 1492 年威尼斯活字到 Fontsource 自托管实践

GFS Neohellenic 是一款由希腊字体协会(Greek Font Society,GFS)数字化并扩充的希腊字体,其历史可追溯至 1492 年威尼斯印刷商 Giovanni Rosso 使用的圆润近单线(monoline)活字。本文以 Fontsource 仓库中 [GFS Neohellenic 的官方字体描述文档](https://link.gitcode.com/i/6a3ed98

gitblog_00039的博客 983

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

上一篇: Sentinel全流程分析和网关规则持久化到Nacos
下一篇: Cursor对话历史自动保存方案-SpecStory使用指南
AJiong93
博客等级 码龄10年 95粉丝 11原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值