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

标签 java grpc grpc-java

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

我面临的问题是,使用 ClientInterceptor 和 SimpleForwardingClientCall 的“sendMessage”方法(从那里我可以获得消息哈希值)是在元数据可用的“start”方法之后调用的......并且似乎通过设计元数据是在执行“start”方法时发送的,因此我必须计算在此之前发送的数据的哈希值...

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

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

最佳答案

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

关于java - 在 ClientInterceptor 上使用 grpc-java 在元数据中包含消息哈希?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51544736/

相关文章:

mysql - 生成的协议(protocol)文件创建目标源时出现错误

java - 如何使用 Java 检测 Windows 8 开始屏幕何时打开?

java - Scala/Play/REPL : Configuration error (play. api.libs.Crypto)

java - IvyDE 无法解析 Mule 依赖关系

android - Google/Firebase android SDK 是否使用 GRPC?

c# - 如何为 C# <proto/> 定义传递experimental_allow_proto3_optional 以在proto3 中启用optional?

java - GRPC : call was half-closed error

java - gRPC 服务器 (Java) 不会根据添加顺序公开服务

grpc-java:正确处理客户端上的服务流调用重试

java - 我们如何计算程序调用 put() 和 get() 函数的次数?