Hi all,
Does anyone use ldap broker discovery with broker authentication ? Having worked out that the ldap discovery simply will not work if I have useJMX="true" in the broker config, I now have it querying my ldap directory for brokers, but since I have authentication enabled on my brokers, the connection is failing as it doesn't appear to be picking up and passing through the broker credentials.

According to http://activemq.apache.org/security.html you just add userName and password attributes to the networkConnector, and http://activemq.apache.org/ldap-broker-discovery-mechanism.html states:
*Other Properties*
All of the properties defined in Networks of Brokers <http://activemq.apache.org/networks-of-brokers.html> are also available to the ldapNetworkConnector. Any of the properties defined for a normal networkConnector will be used as connection parameters to any discovered brokers matching the search criteria.

However when I use the following config, it seems that userName and password attributes are not passed to authenticate the connection:

<ldapNetworkConnector uri="failover:(ldap://ldap1:389,ldap://ldap2:389)"
base="ou=Office,ou=Brokers,ou=ActiveMQ,ou=Systems,dc=myorg,dc=net"
                                  searchFilter="(cn=*)"
                                  userName="activemq"
user="cn=activemq,ou=Systems,dc=myorg,dc=net"
                                  password="Secret"
                                  searchScope="SUBTREE_SCOPE"
                                  prefetchSize="1"
                            />

And the errors from the console are:

DEBUG | Using min of local: WireFormatInfo { version=9, properties={MaxFrameSize=9223372036854775807, CacheSize=1024, CacheEnabled=true, SizePrefixDisabled=false, MaxInactivityDurationInitalDelay=10000, TcpNoDelayEnabled=true, MaxInactivityDuration=30000, TightEncodingEnabled=true, StackTraceEnabled=true}, magic=[A,c,t,i,v,e,M,Q]} and remote: WireFormatInfo { version=7, properties={CacheSize=1024, CacheEnabled=true, SizePrefixDisabled=false, MaxInactivityDurationInitalDelay=10000, TcpNoDelayEnabled=true, MaxInactivityDuration=30000, TightEncodingEnabled=true, StackTraceEnabled=true}, magic=[A,c,t,i,v,e,M,Q]} DEBUG | Received WireFormat: WireFormatInfo { version=7, properties={CacheSize=1024, CacheEnabled=true, SizePrefixDisabled=false, MaxInactivityDurationInitalDelay=10000, TcpNoDelayEnabled=true, MaxInactivityDuration=30000, TightEncodingEnabled=true, StackTraceEnabled=true}, magic=[A,c,t,i,v,e,M,Q]} DEBUG | tcp:///192.168.107.104:61616@41924 before negotiation: OpenWireFormat{version=9, cacheEnabled=false, stackTraceEnabled=false, tightEncodingEnabled=false, sizePrefixDisabled=false, maxFrameSize=9223372036854775807} DEBUG | tcp:///192.168.107.104:61616@41924 after negotiation: OpenWireFormat{version=7, cacheEnabled=true, stackTraceEnabled=true, tightEncodingEnabled=true, sizePrefixDisabled=false, maxFrameSize=9223372036854775807} DEBUG | broker1.office.myorg.net addBroker:broker2.office.myorg.net brokerInfo size : 1
DEBUG | servletNameMap={jsp=jsp, default=default}
DEBUG | Initialized TaskRunnerFactory[ActiveMQ VMTransport: vm://broker1.office.myorg.net#3] using ExecutorService: null DEBUG | Setting up new connection id: ID:broker1.office.myorg.net-33320-1355151115534-6:1, address: vm://broker1.office.myorg.net#2, info: ConnectionInfo {commandId = 2, responseRequired = true, connectionId = ID:broker1.office.myorg.net-33320-1355151115534-6:1, clientId = NC_broker2.office.myorg.net_inbound_broker1.office.myorg.net, clientIp = null, userName = null, password = *****, brokerPath = null, brokerMasterConnector = false, manageable = false, clientMaster = true, faultTolerant = false, failoverReconnect = false} WARN | Failed to add Connection ID:broker1.office.myorg.net-33320-1355151115534-6:1, reason: java.lang.SecurityException: User name [null] or password is invalid.

Can anyone give me any pointers how to get broker authentication to work with ldap discovery please ?

Thanks in advance
Rob

Reply via email to