проблема при настройке интеграции LDAP с ActiveMQ (на centos7) на странице администратора - PullRequest
0 голосов
/ 16 марта 2019

Я прочитал каждую страницу, которую я могу найти на этом, и я просто не получаю что-то.Я всего лишь простой фермер (sysadmin), и у меня заканчиваются волосы, чтобы вытащить.

Что я сделал: На коробке Centos7 я установил apache-activemq-5.15.8, загрузив последнюю версию tarball,и расширяя его.Я настроил служебный файл и несколько других тонкостей, и служба запустится, и я смогу зайти на страницу администратора с кредитами по умолчанию.Будучи мазохистом, я успел сделать это «простым» для пользователей этого приложения, настроив интеграцию LDAP для страницы администратора ... и именно тогда началась борьба.

Я нашел противоречивую информацию об Apacheстраницы.А именно: http://activemq.apache.org/security.html и http://activemq.apache.org/cached-ldap-authorization-module.html

Но я нашел несколько страниц, которые кажутся более полезными, например: https://bacedifo.blogspot.com/2013/06/securing-activemq-580-web-console-using.html и ActiveMQ Web-консоль с использованием аутентификации LDAP Active Directory

Ошибка, которую я получаю, в основном такая же, как и в этом вопросе: Настройка веб-консоли Activemq для использования LDAP для авторизации и аутентификации , но ответ не дает мне достаточно для продолжения... Мне может понадобиться одно и два слога слова.

На странице администратора отображается эта ошибка: enter image description here

Файл activemq.log показывает эту ошибку:

java.lang.AbstractMethodError: org.eclipse.jetty.jaas.JAASLoginService.login(Ljava/lang/String;Ljava/lang/Object;)Lorg/eclipse/jetty/server/UserIdentity;
        at org.eclipse.jetty.security.authentication.LoginAuthenticator.login(LoginAuthenticator.java:61)[jetty-all-9.2.25.v20180606.jar:9.2.25.v20180606]
        at org.eclipse.jetty.security.authentication.BasicAuthenticator.validateRequest(BasicAuthenticator.java:92)[jetty-all-9.2.25.v20180606.jar:9.2.25.v20180606]
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:512)[jetty-all-9.2.25.v20180606.jar:9.2.25.v20180606]
        at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110)[jetty-all-9.2.25.v20180606.jar:9.2.25.v20180606]
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)[jetty-all-9.2.25.v20180606.jar:9.2.25.v20180606]
        at org.eclipse.jetty.server.Server.handle(Server.java:499)[jetty-all-9.2.25.v20180606.jar:9.2.25.v20180606]
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)[jetty-all-9.2.25.v20180606.jar:9.2.25.v20180606]
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:258)[jetty-all-9.2.25.v20180606.jar:9.2.25.v20180606]
        at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)[jetty-all-9.2.25.v20180606.jar:9.2.25.v20180606]
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)[jetty-all-9.2.25.v20180606.jar:9.2.25.v20180606]
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)[jetty-all-9.2.25.v20180606.jar:9.2.25.v20180606]
        at java.lang.Thread.run(Thread.java:748)[:1.8.0_201]

Мои изменения настроек: загрузил jetty-jaas-9.4.15.v20190215.jar и ldaptive-1.2.4.jar и скопировал их в $ ACTIVEMQ_HOME / lib

, изменил $ ACTIVEMQ_HOME / conf / login.config:

activemq-local {
    org.apache.activemq.jaas.PropertiesLoginModule required
        debug=true
        org.apache.activemq.jaas.properties.user="org/apache/activemq/security/users.properties"
        org.apache.activemq.jaas.properties.group="org/apache/activemq/security/groups.properties";
};

contosoRealm {
    org.ldaptive.jaas.LdapLoginModule required
        debug=true
        storePass="true"
        ldapUrl="ldap://dc01.contoso.com:389"
        bindDn="cn=SVC ActiveMQ,ou=Service Accounts,dc=contoso,dc=com"
        baseDn="OU=User Accounts,DC=contoso,DC=com"
        bindCredential="contos0_win5"
        useStartTLS="false"
        userFilter="(sAMAccountName={user})";
   org.ldaptive.jaas.LdapRoleAuthorizationModule required
        useFirstPass="true"
        ldapUrl="ldap://dc01.contoso.com:389"
        bindDn="cn=SVC ActiveMQ,ou=Service Accounts,dc=contoso,dc=com"
        baseDn="OU=Security Groups,OU=Groups,DC=contoso,DC=com"
        bindCredential="contos0_win5"
        roleFilter="(&(cn=activemq_admins)(member={user}))"
        useStartTLS="false"
        defaultRole="admins"
        roleAttribute="cn";
};

И я настроил $ ACTIVEMQ_HOME / conf / jetty.xml

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">


    <bean id="securityLDAPLoginService" class="org.eclipse.jetty.jaas.JAASLoginService">
        <property name="name" value="contosoRealm" />
        <property name="LoginModuleName" value="contosoRealm" />
        <property name="roleClassNames" value="org.eclipse.jetty.jaas.JAASRole" />
        <property name="identityService" ref="identityService" />
    </bean>

    <bean id="identityService" class="org.eclipse.jetty.security.DefaultIdentityService"/>

    <bean id="securityConstraint" class="org.eclipse.jetty.util.security.Constraint">
        <property name="name" value="BASIC" />
        <property name="roles" value="admins,ActiveMQ Admins" />
        <!-- set authenticate=false to disable login -->
        <property name="authenticate" value="true" />
    </bean>

    <bean id="adminSecurityConstraint" class="org.eclipse.jetty.util.security.Constraint">
        <property name="name" value="BASIC" />
        <property name="roles" value="admin,ActiveMQ Admins" />
         <!-- set authenticate=false to disable login -->
        <property name="authenticate" value="true" />
    </bean>
....
....
    <bean id="securityHandler" class="org.eclipse.jetty.security.ConstraintSecurityHandler">
        <property name="loginService" ref="securityLDAPLoginService" />
        <property name="identityService" ref="identityService" />
        <property name="realmName" value="contosoRealm" />
        <property name="authenticator">
            <bean class="org.eclipse.jetty.security.authentication.BasicAuthenticator" />
        </property>
        <property name="constraintMappings">
            <list>
                <ref bean="adminSecurityConstraintMapping" />
                <ref bean="securityConstraintMapping" />
            </list>
        </property>
        <property name="handler" ref="secHandlerCollection" />
    </bean>

Если вы сделали это далеко, я очень благодарен вам!

1 Ответ

0 голосов
/ 19 марта 2019

Хорошо, я нашел это!

Итак, я работал с разработчиком java, который работает здесь, и он сказал то, что, вероятно, очевидно для многих из вас: некоторые необходимые классы недоступны в classpath. В некоторых тестах и ​​копаниях я исправил это, расширив инструкции, найденные здесь: Веб-консоль ActiveMQ с использованием аутентификации LDAP Active Directory Ответ там гласит, что нужно скопировать 2 файла в каталог / lib, но это не включает зависимости. Я нашел пакет всех зависимостей (проверил их на общее количество вирусов) и скопировал их в / lib. Хотя это не решало все проблемы, это исправляло эту ошибку. Я нашел банку с банками:
https://jar -download.com / артефакты / org.eclipse.jetty / Причал-JAAS / 9.2.25.v20180606 / исходный код

...