I wrote yet another certificate-based authentication/authorization
plugin. It reads CN from certificate provided by the client and
depending on what is in there it allows or dissalows
creation/deletion/writing to topics/queues. To test it I wrote a
simple Java client that uses OpenWire. Connection is made
successfully, CN is read and permissions are added are expected.
Unfortunately after connection is created (addConnection in plugin is
called), destination "topic://ActiveMQ.Advisory.Connection" is created
by the client, or rather in its context (ok, unexpected, but it makes
sense as I used advisory topics), method addConsumer() (from
BrokerFilter) is called, and its destination is:

DEST: topic://ActiveMQ.Advisory.TempQueue,topic://ActiveMQ.Advisory.TempTopic
IS TOPIC: true
PHYSNAME: 
topic://ActiveMQ.Advisory.TempQueue,topic://ActiveMQ.Advisory.TempTopic
DEST AS STR: Topic
QUALIFIED NAME:
topic://ActiveMQ.Advisory.TempQueue,topic://ActiveMQ.Advisory.TempTopic
DEST PATHS: 
topic://ActiveMQ|Advisory|TempQueue,topic://ActiveMQ|Advisory|TempTopic
IS TEMP: false

This means that it is a topic, its physical name is equal to qualified
name, which makes no sense whatsoever, what more this name is made up
from two topics names, it isn't temporary (not what name suggests) and
to add insult to the injury its "getDestinationPaths()" method returns
array with the following elements:
"topic://ActiveMQ"
"Advisory"
"TempQueue,topic://ActiveMQ"
"Advisory"
"TempTopic"

I wrote my plugin using
"org.apache.activemq.security.AuthorizationBroker" as a base and aside
from this and single problem with MQTT protocol it works fine.

What is the reason for this topic's existence?
Why is its name so weird?
Should I expect more destinations with such names?
Is it enough to check for exactly this name and I will be done? I did
it and it works, but I can't be sure that it won't happen again with
different weird topic name.

Thanks in advance,
-- 
Jędrzej Dudkiewicz

I really hate this damn machine, I wish that they would sell it.
It never does just what I want, but only what I tell it.

Reply via email to