如何在客户端加密OData请求有效负载(DataServiceContext)和在ServerSide上解密请求?

我有一个Windows应用程序使用DataServiceContext消费OData v4 WebAPI。 WebApi通过SSL,但我认为任何人都可以使用像fiddler这样的Web调试工具(在Windows应用程序主机上)来捕获请求,并且可以通过更改请求主体来重新发出请求。

所以,如果我可以使用生产环境中的公钥/私钥加密Windows应用程序中的传出请求的RequestBody ,我还在想。 如果是,我怎么可以?

我是否需要创建自定义DataServiceClientRequestMessage或需要在DataServiceContext中的某处挂钩加密过程。

请求将使用MessageHandler解密。

ServiceStack加密消息传递

是的,我认为您可以编写自定义DataServiceClientRequestMessage ,并覆盖GetStream()以加密输出流。 然后,使用DataServiceContext.Configurations.RequestPipeline.OnMessageCreating = new CustomRequestMessage()将新消息设置为DataServiceContext。

您可以在OData github存储库中引用自定义DataServiceClientRequestMessage示例。 TestDataServiceClientRequestMessage.cs和DataServiceContextWithCustomTransportLayer.cs