LDAP Broker 探索機制
使用 ActiveMQ Classic 5 > LDAP Broker 探索機制
當系統中的 Broker 數量龐大時,設定網路拓撲可能會相當繁瑣。為了協助簡化這類情況的設定負擔,可以將 Broker 設定為使用 LDAP v3 目錄伺服器來查找其 Broker 連線。
注意
此基本功能是為了滿足 AMQ-358 而新增的。此實作存在已知的問題和限制。這些缺陷已在 AMQ-1587 中解決。本頁討論的功能需要附加至 JIRA 問題 AMQ-1587 的修補程式。此修補程式應可順利套用至 ActiveMQ Classic 5.0.0 版本或目前的開發主幹。
LDAP v3 目錄伺服器相容性
下表列出已知可與 LDAP 探索功能搭配使用的目錄伺服器子集及其相容性。如果大多數 LDAP v3 目錄伺服器正確實作 RFC2307 結構描述,則應支援此功能。為了支援持續搜尋功能,伺服器必須實作 draft-ietf-ldapext-psearch-03.txt 中定義的延伸。
供應商 | 產品 | 版本 | RFC2307 | draft-ietf-ldapext-psearch-03.txt |
---|---|---|---|---|
Apache | ApacheDS | 1.0.x | ![]() |
![]() |
Microsoft | Active Directory | Windows 2000, Windows 2003 | ![]() |
![]() |
Microsoft | Active Directory | Windows 2003 R2 | ![]() |
![]() |
Sun | OpenDS | 0.9.x | ![]() |
![]() |
OpenLDAP | OpenLDAP | 2.3.x, 2.4.x | ![]() |
![]() |
預設情況下,不支援 RFC2307 的 LDAP v3 目錄伺服器。可以手動匯入來新增支援。請參閱供應商的特定設定需求以了解如何執行此操作。
不支援 draft-ietf-ldapext-psearch-03.txt 的 LDAP v3 目錄伺服器。
LDAP 網路連接器屬性
屬性 | 預設值 | 必要 | 描述 |
---|---|---|---|
uri | null | 是 | 要連線的 LDAP v3 伺服器的 URI (例如 ldap://host:port, failover://(ldap://host1:port,ldap://host2:port))。 |
base | null | 是 | 用作搜尋條件根目錄的 RDN 基底。 |
user | null | 是,如果未使用 anonymousAuthentication | 需要繫結至伺服器的使用者名稱。 |
password | null | 是,如果未使用 anonymousAuthentication | 需要繫結至伺服器的密碼。 |
anonymousAuthentication | false | 是,如果未使用 user/password | 如果要匿名繫結至伺服器,請啟用此選項。建議使用此選項而非使用 user/password 屬性,因為您的登入認證不會儲存在未加密的 XML 檔案中。 |
searchEventListener | false | 否 | 如果您希望 Broker 與符合搜尋條件的項目變更保持同步,請啟用此選項。 |
searchScope | ONELEVEL_SCOPE | 否 | 可以是 javax.naming.directory.SearchControls 類別定義的任何搜尋範圍。OBJECT_SCOPE - 搜尋由基底定義的命名物件。ONELEVEL_SCOPE - 搜尋基底的一層。SUBTREE_SCOPE - 搜尋以基底為根的整個子樹。 |
searchFilter | (&(objectClass=ipHost)(objectClass=ipService)) | 否 | 可以是符合 RFC2254 的任何篩選條件。如果指定了自訂篩選條件,則實際使用的搜尋篩選條件將為 (&(&(objectClass=ipHost)(objectClass=ipService))(USER CUSTOM))。 |
其他屬性
Broker 網路中定義的所有屬性也可供 ldapNetworkConnector 使用。為正常網路連接器定義的任何屬性都將用作連線參數,以連線至符合搜尋條件的任何已探索到的 Broker。
範例 1:簡單的 Broker 網路
網路設定
拓撲 | LDAP v3 目錄結構 | 項目 |
---|---|---|
![]() |
![]() |
![]() |
ActiveMQ Classic 設定 (activemq.xml)
srv-a.mydomain.com
<broker brokerName="srv-a.mydomain.com" ...>
...
<networkConnectors>
<ldapNetworkConnector uri="ldap://myldap.mydomain.com:389"
base="dc=brokers,dc=mydomain,dc=com"
anonymousAuthentication="true"
searchFilter="(cn=*)"
searchScope="SUBTREE_SCOPE"
/>
</networkConnectors>
...
</broker>
srv-b.mydomain.com
<broker brokerName="srv-b.mydomain.com" ...>
...
<networkConnectors/>
<!-- NO NETWORK CONNECTORS -->
</networkConnectors>
...
</broker>
範例 2:較大的 Broker 網路
網路設定
拓撲 | LDAP v3 目錄結構 |
---|---|
![]() |
![]() |
ActiveMQ Classic 設定 (activemq.xml)
srv-a.mydomain.com
<broker brokerName="srv-a.mydomain.com" ...>
...
<networkConnectors>
<ldapNetworkConnector uri="ldap://myldap.mydomain.com:389"
base="dc=brokers-for-srv-a,dc=mydomain,dc=com"
anonymousAuthentication="true"
searchFilter="(cn=*)"
searchScope="SUBTREE_SCOPE"
networkTTL="2"
/>
<!-- networkTTL=2 since we want messages to flow from srv-a to srv-c -->
</networkConnectors>
...
</broker>
srv-b.mydomain.com
<broker brokerName="srv-b.mydomain.com" ...>
...
<networkConnectors/>
<ldapNetworkConnector uri="ldap://myldap.mydomain.com:389"
base="dc=brokers-other,dc=mydomain,dc=com"
anonymousAuthentication="true"
searchFilter="(cn=*)"
searchScope="SUBTREE_SCOPE"
/>
</networkConnectors>
...
</broker>
srv-c.mydomain.com
<broker brokerName="srv-c.mydomain.com" ...>
...
<networkConnectors/>
<!-- NO NETWORK CONNECTORS -->
</networkConnectors>
...
</broker>
srv-d.mydomain.com
<broker brokerName="srv-d.mydomain.com" ...>
...
<networkConnectors/>
<ldapNetworkConnector uri="ldap://myldap.mydomain.com:389"
base="dc=brokers-other,dc=mydomain,dc=com"
anonymousAuthentication="true"
searchFilter="(cn=*)"
searchScope="SUBTREE_SCOPE"
/>
</networkConnectors>
...
</broker>