Я пытаюсь реализовать аутентификацию и авторизацию на основе 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](https://i.stack.imgur.com/UQ7jz.png)
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
Как я могу предоставить этому пользователю создать тему назначения?( Этот довольно старый вопрос не помог)