Я занимаюсь разработкой приложения на C ++ с использованием Qpid C ++ Messaging API. Приложение должно отправлять сообщения другому приложению .net, работающему с amqpnetlite.
Однако при инициализации соединения на стороне C ++ я получил эту ошибку безопасности:
[Security] error Expected SASL frame; got type \0x00
[Security] error Unexpected descriptor in SASL negotiation: unknown-descriptor (0x10).
Мне было интересно, у кого-нибудь есть мысли по поводу ошибки?
Дополнительная информация:
qpidd --auth no
, Теперь и сценарий Python, и приложение C ++ (подключение настроено с помощью {sasl_mechanism:ANONYMOUS}
) может отправлять сообщения через.Любая или вся помощь будет оценена!
РЕДАКТИРОВАТЬ
Найди решение сам.
При инициализации соединения на стороне приложения C ++ для SASL_MECHANISMS должно быть явно установлено NONE, поскольку по умолчанию amqpnetlite отключает любую аутентификацию (даже не режим ANONYMOUS) при прослушивании входящего соединения.
Это можно сделать в коде C ++, выполнив
connection.setOption("sasl_mechanisms","NONE");
или предоставив опцию из командной строки.
./send.o localhost {protocol:amqp1.0\,sasl_mechanisms:NONE}
Параметр NONE для sasl_mechanisms нигде не описан в документации по API Qpid C ++. Это нужно выяснить, заглянув в исходный код.
Задача ещё не решена.
Других решений пока нет …