簡體   English   中英

如何在Qpid中設置安全提供程序以允許匿名身份驗證以及名稱/密碼身份驗證?

[英]How do I set up a security provider in Qpid to allow anonymous and also name/password authentication?

這是我使用Apache Proton和Qpid(java-broker版本0.32)的第一天,我需要一個簡單的Java發送和接收示例(無JMS)。 通過四處瀏覽,我發現Send.java和Recv.java都不起作用。

在“ mng.send()

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

從stackoverflow和其他六個Google搜索看來,必須首先創建一個“匿名”安全提供程序。

如何做到這一點? 我既無法猜測config.json的更改,也無法猜測如何使用Web界面。 Qpid Java Broker文檔中的兩句prose對我沒有幫助。

在相關說明中,我不能僅使用“ amqp:// admin:admin @ localhost:5672”(或amqps:// admin:admin @ localhost嗎?)並利用已經存在的安全提供程序?

是否有人有記錄在案的Java發送和接收示例,已知該示例實際上在當前版本的Qpid和Proton上運行,並且具有任何必要的config.json更改?

帶有QPID Proton庫的QPID Java Broker可以正確進行匿名身份驗證。

請遵循以下步驟,以避免QPID Java Broker 0.32的連接中止。

  1. 使用管理員用戶和密碼登錄到Broker本地網頁,例如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;
}

要啟用ANONYMOUS身份驗證,請在代理配置的安全性部分中添加一個空的anonymous-auth-manager標記:

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

默認位置是${QPID_HOME}/etc/config.xml

Java代理不支持匿名身份驗證。 我需要切換到C ++代理。

如果僅Qpid團隊可以對其進行測試,那么Qid和Proton仍然需要Java教程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM