加密 ServiceStack ServerEventsClient 消息传递

Encrypting ServiceStack ServerEventsClient messaging

我正在尝试在使用 ServerEventsClient 时保护我的服务器和客户端之间的消息传递。在我的服务器上,我注册了相应的功能并创建了密钥对。问题出在客户端 - 我无法从 ServerEventsClient 创建 EncryptedClient。

var client = new ServerEventsClient("http://localhost:1337/", "home")
{
    OnConnect = OnConnect,
    OnCommand = HandleIncomingCommand,
    OnMessage = HandleIncomingMessage,
    OnException = OnException,
    OnHeartbeat = OnHeartbeat
};

var publicKey = client.ServiceClient.Get(new GetPublicKey());

我可以成功拿到钥匙但是没有类似的东西

client.GetEncryptedClient(publicKey);

client.ServiceCLient.GetEncryptedClient(publicKey);

现在有没有办法保护我的消息?

ServiceStack 的 Encrypted Messaging Feature 仅限于正常的 Request/Reply 服务,其中请求和响应 DTO 打包在加密消息中发送。

ServiceStack 的 Server Events 直接写入响应输出流,即不加密。由于通知是以明文形式发送的,因此您需要将它们限制为仅发送 "ID" 对敏感信息的引用的通知,然后客户端将使用加密客户端访问这些信息。