LDAP Broker 发现机制
使用 ActiveMQ Classic 5 > LDAP Broker 发现机制
当系统中的代理数量很大时,配置网络拓扑可能会非常繁琐。为了帮助简化此类情况下的配置开销,代理可以被配置为使用 LDAP v3 目录服务器查找其代理连接。
注意
基本功能的添加是为了满足 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 | 否 | 如果要使代理与匹配搜索条件的条目所做的更改保持同步,请启用此选项。 |
searchScope | ONELEVEL_SCOPE | 否 | 可以是 javax.naming.directory.SearchControls 类定义的任何搜索范围。OBJECT_SCOPE - 搜索由 base 定义的命名对象。ONELEVEL_SCOPE - 搜索 base 的一层。SUBTREE_SCOPE - 搜索以 base 为根的整个子树。 |
searchFilter | (&(objectClass=ipHost)(objectClass=ipService)) | 否 | 可以是符合 RFC2254 的任何过滤器。如果指定自定义过滤器,则使用的实际搜索过滤器将是 (&(&(objectClass=ipHost)(objectClass=ipService))(USER CUSTOM)) |
其他属性
在 代理网络 中定义的所有属性也适用于 ldapNetworkConnector。为正常 networkConnector 定义的任何属性都将用作与匹配搜索条件的任何发现代理的连接参数。
示例 1:简单的代理网络
网络配置
拓扑 | 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:更大的代理网络
网络配置
拓扑 | 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>