0

暗号化された msmq メッセージを送信すると、認証の速度が低下するようです (2500 メッセージ/秒から 150 メッセージ/秒)。

これは、System.Messaging.MessageQueue と msmqIntegration バインディングを使用する Wcf クライアントの両方に当てはまるようです。

私の要件は暗号化されたトランスポートです。認証なしで実行できます。設定はapp.configから変更できるため、WCFクライアントをお勧めします。

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);

認証をオンにすると、また送信が遅くなる!

助けてくれてありがとう!

4

1 に答える 1

0

WindowsDomainauthentication は Kerberos 認証を意味します。これは必然的に複数のエージェント プロトコルです (4 つ以上の異なるメッセージが送信されるようなものを使用します)。ブロッキング.Send()方法を使用しているため。非同期性/同時実行性を投入しない場合、(複数のレイテンシ パスにより) レートが制限されます。

Certificateシンプルな認証に切り替えるだけで十分な場合があります。

その結果、サーバーはユーザーの資格情報なしでメッセージを実行しますが、認証されます (メッセージの送信者はわかっていますが、そのユーザーのアクセス許可に昇格することはできません)。

于 2015-09-01T17:08:19.827 に答える