Пользователь не авторизован для создания темы: //ActiveMQ.Advisory.Connection - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь реализовать аутентификацию и авторизацию на основе LDAP в ActiveMQ.

Часть LDAP выполняется с помощью ApacheDS 2.0.(Структура взята из http://tmielke.blogspot.com/2011/12/activemq-ldap-based-authentication-and.html - к сожалению, указанное Руководство по безопасности FuseSource ActiveMQ находится в автономном режиме)

Я создал пользователей (например, uid = user2, ou = users, o = X) как inetOrgPerson с SHAпользовательский пароль.Система ou = выглядит следующим образом:

LDAP ActiveMQ structure

ldif выбранного элемента:

dn: cn=admin,cn=ActiveMQ.\>,ou=Topic,ou=Destination,ou=ActiveMQ,ou=system
objectClass: groupOfNames
objectClass: top
cn: admin
member: ou=users,o=X
member: uid=user2,ou=users,o=X

(я пытался столько один член и оба)

Ссылка на shiro.ini из части плагинов activemq.xml:

<bean id="shiroPlugin" class="org.apache.activemq.shiro.ShiroPlugin" xmlns="http://www.springframework.org/schema/beans">
    <property name="iniResourcePath" value="classpath:shiro.ini"/>
</bean>

и содержит только следующую запись в [main] part:

ldapRealm = org.apache.shiro.realm.ldap.JndiLdapRealm
ldapRealm.userDnTemplate = uid={0},ou=users,o=X
ldapRealm.contextFactory.url = ldap://localhost:10389
securityManager.realms = $ldapRealm

Аутентификация работает с Java:

Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
SecurityManager securityManager = factory.getInstance();
AuthenticationToken authenticationToken = new UsernamePasswordToken("user2", "password123");
AuthenticationInfo authenticationInfo = securityManager.authenticate(authenticationToken);
System.out.println("authenticationInfo: " + authenticationInfo);
//authenticationInfo: user2

Однако при подключении к MoM-Broker и попытке отправить сообщение я получаю следующее исключение:

SecurityException: Subject [user2] is not authorized to create destination: topic://ActiveMQ.Advisory.Connection

Как я могу предоставить этому пользователю создать тему назначения?( Этот довольно старый вопрос не помог)

...