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

时间:2016-05-26 08:28:33

标签: c# encryption asp.net-web-api odata httprequest

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

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

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

请求将使用MessageHandler解密。

ServiceStack Encrypted Messaging

1 个答案:

答案 0 :(得分:0)

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

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