前言

shenyu以前叫soul网关,我比较早关注它的,直到前不久看到它们创始人发的朋友圈,才知道现在已经是apache顶级项目了,666

今天我点了下shenyu issue里头逛逛,发现了一个老哥说能否做到对签名插件的扩展,然后我就去看了shenyu里头怎么实现验签的

github.com/apache/shen…

加了他们创始人微信挺久了,也关注shenyu网关一段时间,因为本身在架构组也会接触网关内容

shenyu网关

shenyu跟其他网关一样,都是通过责任链的方式,这样可以灵活进行扩展,也能做到每个处理类都难处理到。

我目前项目也有鉴权功能,也看看别人是怎么实现的

鉴权sign

首先肯定是找到对应的模块,shenyu-plugin-sign,SignPlugin 就是网关处理链条中的一环。

@Bean
public ShenyuPlugin signPlugin(final SignService signService) {
    return new SignPlugin(signService);
}

就是你在项目里头注入哪个SignService实现类,它会塞到这插件里头来。

它会去判断规则是否存在,什么规则?就是验证签名的时候那些配置,比如说多久超时,哪些url要通过sign验签。

但是这里也暴露了一个问题,过度依赖配置,如果做到高可用,可以做一层backup备份,如果没有配置,或者配置读不到的情况下,读取上次配置的内容。

DefaultSignService

这里有个比较好的东西,就是会将一些内容封装到上下文里头,比如说a节点,处理了一个东西,还要set一个特殊的key到header里面,然后让后面的去拿,这就很不方便了,如果是放在上下文的话,这就统一处理。

验签逻辑开始,首先是对时间做验证,然后再是算法验。

这里我要直呼一声好家伙,exchange.getRequest().getQueryParams()直接拿到请求的参数,如果你在服务里面实现那得累死你,区分post、get请求,需要特殊处理。

buildParamsMap(shenyuContext, requestBody)

这个map里头有啥?加了时间戳、url、版本号,请求参数(去除sign)

DigestUtils.md5DigestAsHex(sign.getBytes()).toUpperCase()

这里是sign签名算法

总结

到这里,shenyu的sign插件逻辑就差不多了,直呼好家伙,跟我现在项目里头验签逻辑一毛一样,只是签名算法有所不同。但是这里面还是有些能优化的点,比如说过度依赖shenyu现有的配置内容,需要做到网关点高可用~

shenyu这里跟其他配置中心也有所不一样,采用map来接收配置内容,我们看nacos、apolla这些框架是刷新到eventment环境变量里头去。

以上就是shenyu怎么处理sign鉴权前置到网关的详细内容,更多关于shenyu处理sign鉴权前置网关的资料请关注Devmax其它相关文章!

shenyu怎么处理sign鉴权前置到网关的更多相关文章

  1. iWatch报错: Fail to code sign "***" No valid signing identities (i.e. certificate and private key pair

    此错误是证书和开发者账号不匹配.一般出现在我们运行其他人的项目时.所以要检查所以需要开发者账号生产的证书,用自己的账号重新生成一下.比如:如果别人的项目中使用了Healthkit.你直接运行的时候就会报这个错误,因为要Healthkit需要开发者账号生产对应的证书.所以我们运行的时候要使用自己的开发者账号重新生成认证证书.详细可参考这篇博客:http://blog.csdn.net/soindy/

  2. swift 移动支付之【支付宝支付】详细步骤

    二.准备工作支付宝开放平台1.向支付宝签约这一步因为涉及到营业执照之类,一般有公司完成,在此不赘述了。支付宝目前只支持采用RSA加密方式做签名验证。具体到支付宝使用RSA做签名验证,就是在生产订单时,需要使用私钥生成签名值;在处理返回的支付结果时,需要使用公钥验证返回结果是否被篡改了。

  3. swift 移动支付之【微信支付】开发步骤

    //向微信注册WXApi.registerapp2.发送预支付数据预支付数据由后台返回,格式如下[plain]viewplaincopyprint?{"appid":"wxxxxxxxxxxx","noncestr":"Hk8dsZoMOdTXGjkJ","package":"Sign=WXPay","partnerid":"01001010110","prepayid":"wx2016050000000000000000000000","sign":"B4879FFFA8B65522A04034E2D0

  4. Android – GoogleSignInResult总是失败

    类似的问题here,但我添加了json文件.解决方法问题是我从AndroidStudio运行应用程序,因此该应用程序未使用我的证书进行签名,而Google登录需要该证书.

  5. android – 如何检查用户是否已登录Google?

    我正在写一个需要用户登录的应用程序.我想通过Google实现,并按照以下文章设置我的登录活动LoginActivity:>GettingStartedwiththeGoogle+PlatformforAndroid>Google+Sign-inforAndroid流程:>用户打开我的应用程序–MainActivity>它检查用户是否已登录>如果用户尚未登录,则会将用户重定向到LoginActivi

  6. android – GoogleSignInAccount getPhotoUrl()返回null

    尝试从登录的配置文件中获取照片.但总是返回null.名称和电子邮件返回值,只有照片才有麻烦.为什么会这样发生?

  7. shenyu怎么处理sign鉴权前置到网关

    这篇文章主要为大家介绍了shenyu怎么处理sign鉴权前置到网关方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  8. 详解IOS的Automatically Sign在设备上打包

    本篇教程主要给大家分享了IOS的Automatically Sign如何在设备上直接打包,有需要的朋友参考学习下。

  9. 详解淘宝H5 sign加密算法

    这篇文章主要介绍了详解淘宝H5 sign加密算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  10. 安卓逆向案例分析之蝉妈妈sign破解

    这篇文章主要为大家介绍了安卓逆向案例分析蝉妈妈sign破解的方式讲解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部