如何设立Qpid安全提供允许匿名,也名/密码认证?(How do I set up a securi

2019-10-24 05:21发布

这是我的第一天与Apache质子和Qpid(Java的经纪人版本0.32),我需要一个简单的发送和Java中(无JMS)receive例子。 通过四处寻找,我发现Send.java和Recv.java均未实际工作。

在“mng.send()我得到

java.io.IOException: An established connection was aborted by the software in your host machine

从计算器和半打其他的谷歌搜索似乎是一个必须首先创建一个“匿名”安全提供商。

怎样才能做到这一点? 我无法猜测要么config.json变化也不如何使用Web界面。 散文的Qpid Java的经纪人文档中的两句话不是我的帮助。

与此相关的,我不能只用“AMQP://管理:管理@本地:5672”(或amqps://管理:管理@本地),并采取安全提供商已经存在的优势在哪里?

有没有人有发送的文档的Java例子和recv是已知实际上在Qpid和质子的当前版本上运行,并配有任何先决条件config.json变化?

Answer 1:

QPID Java的经纪人与QPID腾库工作没有错误匿名身份验证。

请按照以下步骤来避免连接中断的QPID的Java经纪人0.32。

  1. 登录到经纪人本地网页如的locahost:8080与您的管理员用户名和密码
  2. 转到“代理”选项卡,然后向下滚动找到“认证供应商”
  3. 并点击“添加提供程序”,输入以下详细信息并保存,名称:匿名类型:匿名

  4. 现在再次,进入“代理”选项卡,然后向下滚动找到“端口” - AMQP。 点击AMQP编辑。 选择“认证供应商”到您在上面步骤3中创建从下拉列表并保存一个。

  5. 试试你的测试代码

下面是情况下所需的工作示例:

private static final String address = "amqp://guest:guest@localhost:5672/"; // (format : QPIDPortName://user:password@host:port you may use admin:admin as well if not removed from default setting by your administrator) 
private static final String exchangeName = "MYTOPIC-EXCHANGE"; // First create this exchange in QPID Broker!
private static final String publishToAddress = new StringBuilder().append(address).append(exchangeName).toString();

public static boolean publishMessage(String msg)
{
    boolean isMsgDelivered = false;
    ApplicationProperties customAppProperties = null;
    try 
    {
        Messenger messenger = Proton.messenger();
        messenger.start();
        Message message = Proton.message();

        message.setAddress(publishToAddress);
        message.setContentEncoding("UTF-8");
        message.setContentType("text/plain");
        message.setSubject(exchangeName);
        Section sec = new AmqpValue(msg);
        message.setBody(sec);

        messenger.put(message);
        messenger.send();
        messenger.stop();
        isMsgDelivered = true;
    } 
    catch (Exception e) 
    {
        logger.log(Level.SEVERE, "Qpid Proton error: "+ e.getMessage(), e);
        e.printStackTrace();
    }

    return isMsgDelivered;
}


Answer 2:

要启用ANONYMOUS身份验证,添加一个空的anonymous-auth-manager在你的经纪人配置的安全部分标签:

<security>
  <anonymous-auth-manager/>
  ...
</security>

默认位置为${QPID_HOME}/etc/config.xml



Answer 3:

Java的经纪人不支持匿名身份验证。 我需要切换到C ++经纪人。

QID和质子仍需要Java教程如果只有这样的团队qpid可以测试它。



文章来源: How do I set up a security provider in Qpid to allow anonymous and also name/password authentication?
标签: java amqp qpid