最近在做公司一个互联网收银机项目里面,需要调用一些远程服务接口,综合性能、安全和便捷考虑,决定使用rpc方式调用。rpc框架,采用dubbo。


我们知道,一般使用dubbo rpc都是在内网环境部署,然后采用zookeeper作为配置服务器进行集群。基于这次作为外网使用,不想过多地暴露内网服务,也没必要去维护一个远程的zookeeper连接,所以我决定采取消费端直连服务端模式。


因为把所有服务都对外暴露了,必须要考虑一个安全认证的问题,否则哪天某个离职的程序在家也能随意访问。


查阅dubbo官方文档,它本身确实有token认证功能,但是官方介绍不详细,貌似是用来结合注册中心使用。


经过翻阅源码,很惊喜,发现是可以在直连模式下使用。但是如果你想通过配置文件,给referrence配置一个token是不行的,因为它的的schema里面并没有这样定义。那我们怎么把token传给服务端呢? 采用隐式传参:RpcContext.getContext().setAttachment("token","123456"); 当然,服务端,也许要给暴露的service暴露的配置响应的token。


很奇怪为什么官方没有做这个说明?
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐