-
Notifications
You must be signed in to change notification settings - Fork 26.5k
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Dubbo调用鉴权认证方案 #5461
Comments
提一个简单的方案,全局或者每个provider,可以指定allow_apps\deny_apps(block_apps) 备注一下:是控制app背后的ip访问限制 |
@amwei 嗯 你这个确实比较简单,实现也容易很多,基本靠一个provider端的filter会实现了,但是后续对于黑白名单的增加还得重启。上面说的方案引入了一个额外的系统,确实复杂度会提高,但是在安全性和扩展性方面都会有很大的改善,目前我们也在权衡。 |
鉴权服务和各个微服务之间是可信内网通信吗?如果外网负责环境的话是不是还要考虑下HTTPS和TLS的中间人攻击问题,AK/SK下发和更新过程中可能会被中间人截获。 |
当然这样考虑问题就会复杂了 |
我们最近也在做服务身份认证的方案,你这种实现是中心化的实现。 对于服务黑白名单,我们考虑直接用sentinel来做即可,这是 |
这里也贴下我们的方案吧,一起探讨下。 基本流程如上图,流程如下:
性能优化由于token的生成和校验用了非对称加密算法,在性能上有一定的影响,为了解决该问题,我们引入“预生成”和“预校验”,结合内存缓存一起使用。 “预生成”逻辑:(假设每小时产生一个新的token)
“预校验”逻辑:(假设token的缓存失效时间为客户端弃用半小时后)
通过以上两种方式结合:
总结该方案是基于去中心化设计的,而且只解决 |
定期更新可以改为握手时获取加监听变化,利用rpc服务发现的长链接信道。 |
您好,鉴权认证的方案在dubbo-2.7.6中,是否可以使用? |
基本需求:
方案设计:
细节说明
签名过程,调用方可选择签名策略,选择根据调用元信息签名(方法信息、接口信息)和混合参数签名方法。
验签过程:provider收到调用请求时,根据AK查询缓存的SK(如果没有对应的AK,则立刻同步一次鉴权服务),并用同样方法计算signature,检查signature是否相同, 通过则执行调用,否则抛出异常。
鉴权服务接口设计
鉴权服务是Dubbo的外部服务,进行统一管理AK/SK,并为Dubbo应用提供AK/SK下发。
接口地址
https://ip:80/secrets/{appName}
请求方式: GET
返回数据格式: JSON
返回数据定义:
The text was updated successfully, but these errors were encountered: