【问题标题】:msmq authentication slows encryptionmsmq 身份验证减慢加密速度
【发布时间】:2015-11-26 19:28:55
【问题描述】:

发送加密的 msmq 消息时,身份验证似乎会降低速度(从 2500 msg/sec 到 150 msgs/sec)。

System.Messaging.MessageQueue 和带有 msmqIntegration 绑定的 Wcf 客户端似乎都是这种情况。

我的要求是加密传输,无需身份验证即可。我更喜欢 WCF 客户端,因为可以从 app.config 更改设置。

有没有办法让 msmqIntegrationBinding 在不进行身份验证的情况下进行传输加密?

    <msmqIntegrationBinding>
        <binding name="VisionAirMessagingBinding"
            timeToLive="12:00:00"
            maxReceivedMessageSize="4100000"
            receiveErrorHandling="Move"
            retryCycleDelay="00:30:00"
            useMsmqTracing="false"
            serializationFormat="Stream">
            <security mode="Transport">
                <transport msmqAuthenticationMode="WindowsDomain"
                    msmqEncryptionAlgorithm="RC4Stream"
                    msmqProtectionLevel="EncryptAndSign"
                    msmqSecureHashAlgorithm="Sha1"/>
                    </security>
                </binding>

我发现在使用系统时通过注释掉以下内容,身份验证会减慢我的速度。

q1.Send(new Message 
{
    BodyStream = new MemoryStream(
        Encoding.ASCII.GetBytes("ABCDEFGHIJKLMNOPQRSTUVXYZ")),
        Label = i.ToString(),
        //UseAuthentication = true,
        UseEncryption = true
}, msmqTx);

如果我打开身份验证,发送又变慢了!

感谢您的帮助!

【问题讨论】:

    标签: wcf msmq msmqintegrationbinding


    【解决方案1】:

    WindowsDomain 身份验证表示 Kerberos 身份验证。它必然是一个多代理协议(使用类似 4+ 不同的消息发送)。由于您使用的是阻塞 .Send() 方法。如果您不投入一些异步/并发性,这将限制您的速率(由于多个延迟路径)。

    您可能会发现切换到简单的Certificate 身份验证就足够了。

    结果是服务器将在没有用户凭据的情况下执行消息,但将通过身份验证(您知道是谁发送了消息,但您不能提升到该用户的权限)。

    【讨论】:

    • 尝试使用证书身份验证,但速度更慢(65 消息/秒)。
    • 将通过使用 System.Messaging、MessageQueue- 对象而不是 WCF 来解决此问题。配置文件会受到影响:)
    猜你喜欢
    • 1970-01-01
    • 2011-11-09
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-30
    相关资源
    最近更新 更多