网关
网关运行分析报告
网关运行分析报告 - 2025-02-15
网关运行分析报告 - 2025-02-22
网关运行分析报告 - 2025-02-28
1.shenyu网关内外网使用
2.shenyu网关的具体使用
记一次网关线上问题之icsp访问ERP
再次思考多套ak/sk同时访问同一资源路径问题
网关接入说明
网关接入说明补充
网关分配各系统命名
网关BUG及二开
网关管理端访问地址
修改requestBody与responseBody
shenyu工程理解
获取requestBody异步问题
shenyu工程部署
排查sign插件报错500问题
shenyu数据结构设计
shenyu网关请求过程
shenyu自定义插件
记一次网关线上问题----网关无法对外提供服务
网关插件更新报错问题
网关中grayTag的使用
Exceeded limit on max bytes to buffer : 262144
网关中Divide插件中Selector中Handler中配置丢失问题
网关请求下游系统时长记录
通用测试:获取网关的sign值
网关分发主数据设想方案
铁骑主数据分发机制完善
27.GTMS&ITMS与gateway的关系
28.ZPI与gateway的关系
26.网关验签场景
29.PC端空值,服务端正常请求
30.网关requestMaxSize值
31.跨系统跨语言日志链路追踪
32.网关异步分发讨论
33.网关LoggingConsole丢失日志排查
34.网关升级shenyu-admin
35.网关异步分发插件 - 接入文档
本文档使用「觅思文档专业版」发布
-
+
首页
记一次网关线上问题之icsp访问ERP
## 1.需求 现在需求:icsp访问ERP。 已有需求:oaext访问ERP。 ## 2.访问资源路径配置 icsp资源路径,如下图  由图可知,icsp访问erp的资源路径是/RESTAdapter/icsp/fico/\**。 oaext资源路径,如下图  由图可知,oaext访问erp的资源路径是/RESTAdapter/\**,实际的访问路径应该是/RESTAdapter/oa/push/sd/dn/back,我在oaext这里配置的范围超大了。 ## 3.认证选择器配置 按照《shenyu网关的具体使用》这一篇文章中的2.1方式配置,则需要给icsp与oaext都配置个Sign选择器,如下图  icsp的Sign的选择器配置如下  icsp认证插件的规则配置如下  我们发现icsp选择器中的过滤条件是:DSystem=ERP;规则中的过滤条件是:/RESTAdapter/icsp/fico/\**。很明显,这种配置没得问题,可以满足icsp访问erp的认证场景。 oaext的Sign的选择器配置如下  oaext认证插件的规则配置如下  我们发现oaext选择器的过滤条件是:DSystem=ERP;规则中的过滤条件是:/RESTAdapter/\**。很明显,这种配置没得问题,可以满足oaext访问erp的认证场景。 ## 4.线上故障 在步骤3中,站在icsp与oaext的单独角度考虑,配置没得问题,但是线上就是出问题了,今早icsp项目组(昨晚刚上线)的同事告诉我,生产环境icsp访问ERP失败了,报错网关认证没通过。如下就是我排查问题的步骤 1>排查下icsp资源访问路径配置,没得问题 2>排查下icsp的Sign插件中的选择器与规则配置,没得问题 咦,配置都没得问题,这是哪里出问题了呢?只能看日志了,如下图  啥子情况,咋个没走icsp的认证选择器,却走了oaext的认证选择器,难道oaext中的条件也满足,查看了下oaext的选择器与规则器配置,详见步骤3中的图,惊奇的发现,icsp的请求竟然先被oaext的过滤条件拦截了,同时判断下ak与sk不满足条件,则直接返回401了。 那现在问题找到了,是oaext中的规则配置路径范围(/RESTAdapter/\**)太大了,OK,我们改小点(/RESTAdapter/oa/\**)。再测试了一把icsp的请求,额,这次对了,问题完美的解决了。 ## 5.思考 一般来说,问题解决了,尤其是线上紧急问题,皆大欢喜,本次事情就结束了。但我隐约感觉哪里不对。 假设icsp访问erp的资源路径:/RESTAdapter/icsp/fico/\**,同时oaext也访问这个资源路径,那么就会出现icsp与oaext的认证选择器与规则器过滤条件一模一样,由于Sign插件下的选择器是有顺序的,假设如上图所示,即oaext在icsp前面,那么oaext访问资源路径:/RESTAdapter/icsp/fico/\**可以顺利认证通过,接着执行icsp的认证,认证通不过;同时icsp访问资源路径:/RESTAdapter/icsp/fico/\**,由于优先匹配oaext的ak与sk,这一步就通不过。所以<font color=red>当多个系统同时访问一个资源路径的时候,《shenyu网关的具体使用》这一篇文章中的2.1方式是无法满足需求的</font>,那我们选用方式2.2来举例子 ### 5.1 Sign插件中的选择器配置 选择器中配置的是目标系统,如下图  ### 5.2 Sign插件中的规则器配置 规则器配置,见下图  很明显,当icsp与oaext都访问ERP时,选择器都可以进入,规则器分情况如下 | 访问系统 | 资源路径 | 选择器配置 | 规则器配置 | | --- | --- | --- | --- | | icsp | /RESTAdapter/icsp/fico/\*\* | DSystem=ERP | /RESTAdapter/icsp/fico/\** | | oaext | /RESTAdapter/oa/\*\* | DSystem=ERP | /RESTAdapter/oa/\** | | icsp | /RESTAdapter/ccs/\*\* | DSystem=ERP | /RESTAdapter/ccs/\*\* | | oaext | /RESTAdapter/ccs/\*\* | DSystem=ERP | /RESTAdapter/ccs/\*\* | 场景如下 | 场景 | 是否通过 | | --- | --- | | icsp访问/RESTAdapter/icsp/fico/\*\* | 通过 | | oaext访问/RESTAdapter/oa/\*\* | 通过 | | icsp与oaext访问/RESTAdapter/ccs/\*\* | 通过 | | icsp访问/RESTAdapter/oa/\*\* | 不通过 | | oaext访问/RESTAdapter/icsp/\*\* | 不通过 | 即满足了所有的场景。 总结:还是得采用《shenyu网关的具体使用》这篇文章中2.2方式,Sign插件中的选择器配置的是目标系统。
李贤利
2022年10月22日 15:21
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
Word文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
有效期