Проверка подлинности msmq замедляет шифрование

При отправке зашифрованного сообщения msmq похоже, что аутентификация замедляет скорость (от 2500 мсг / сек до 150 мсг / сек).

По-видимому, это относится как к System.Messaging.MessageQueue, так и к клиенту Wcf с привязкой msmqIntegration.

Мое требование для зашифрованного транспорта, я могу обойтись без аутентификации. Я бы предпочел клиента 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);

Если я включу аутентификацию, отправка снова станет медленной!

Спасибо за любую помощь!

1 ответ

Решение

WindowsDomain аутентификация означает аутентификацию Kerberos. Это обязательно протокол нескольких агентов (использующий что-то вроде 4+ разных отправляемых сообщений). Так как вы используете блокировку .Send() метод. Это ограничит вашу скорость (из-за нескольких путей задержки), если вы не добавите асинхронность / параллелизм.

Вы можете обнаружить, что переход на простой Certificate аутентификации будет достаточно.

В результате сервер будет выполнять сообщение без учетных данных пользователя, но будет проходить проверку подлинности (вы знаете, кто отправил сообщение, но вы не можете повысить права этого пользователя).

Другие вопросы по тегам