在ClientInterceptor上使用grpc-java将消息哈希包含在元数据中吗?

时间:2018-07-26 17:45:15

标签: java grpc grpc-java

我正在使用grpc-java进行PoC,该测试的主要目的之一是验证元数据/消息的完整性;基本上,我试图将一些调用属性(用户,时间,traceId等)和发送到服务器的数据散列到作为元数据发送的单个JWT令牌中。

我面临的问题是,使用ClientInterceptor和SimpleForwardingClientCall的“ sendMessage”方法(从那里我可以获取消息哈希值)在“ start”方法(在该方法中有元数据可用)之后被调用...设计元数据是在执行“开始”方法时发送的,因此我必须计算在此之前发送的数据的哈希值...

有人做过这样的事情吗?我是否缺少某些功能?

感谢您的帮助或建议...

1 个答案:

答案 0 :(得分:1)

您可以延迟调用next.newCall()或调用clientCall.start(),直到调用拦截器的sendMessage()。您需要将值保存在字段中,然后在调用sendMessage()时播放它们。