java - 配置 Activemq Web 控制台以使用 LDAP 进行授权和身份验证

标签 java authentication ldap jetty activemq

在配置 activemq Web 控制台以使用 ldap 进行身份验证和授权时,出现以下错误。我为此使用免费的在线测试 ldap http://www.forumsys.com/en/tutorials/integration-how-to/ldap/online-ldap-test-server/并得到以下错误:

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.13.v20150730.jar:9.2.13.v20150730] 
        at org.eclipse.jetty.security.authentication.BasicAuthenticator.validateRequest(BasicAuthenticator.java:92)[jetty-all-9.2.13.v20150730.jar:9.2.13.v20150730] 
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:512)[jetty-all-9.2.13.v20150730.jar:9.2.13.v20150730] 
        at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110)[jetty-all-9.2.13.v20150730.jar:9.2.13.v20150730] 
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)[jetty-all-9.2.13.v20150730.jar:9.2.13.v20150730] 
        at org.eclipse.jetty.server.Server.handle(Server.java:499)[jetty-all-9.2.13.v20150730.jar:9.2.13.v20150730] 
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)[jetty-all-9.2.13.v20150730.jar:9.2.13.v20150730] 
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)[jetty-all-9.2.13.v20150730.jar:9.2.13.v20150730] 
        at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)[jetty-all-9.2.13.v20150730.jar:9.2.13.v20150730] 
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)[jetty-all-9.2.13.v20150730.jar:9.2.13.v20150730] 
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)[jetty-all-9.2.13.v20150730.jar:9.2.13.v20150730] 
        at java.lang.Thread.run(Thread.java:745)[:1.8.0_101] 

请参阅我的 jetty.xml 和 login.conf 配置部分并提出建议。

登录配置

LDAPLogin { 
  org.apache.activemq.jaas.LDAPLoginModule required 
    debug=true 
    initialContextFactory=com.sun.jndi.ldap.LdapCtxFactory 
    connectionURL="ldap://ldap.forumsys.com:389" 
    connectionUsername="cn=read-only-admin,dc=example,dc=com" 
    connectionPassword=password 
    connectionProtocol="" 
    authentication=simple 
    userBase="dc=example,dc=com" 
    userSearchMatching="(uid={0})" 
    userSearchSubtree=false 
    roleBase="dc=example,dc=com" 
    roleName=ou 
    roleSearchMatching="(ou=scientists)" 
    roleSearchSubtree=false 
    ; 
}; 

jetty.xml

<bean id="ldapLoginService" class="org.eclipse.jetty.jaas.JAASLoginService">
        <property name="name" value="LdapRealm" />
        <property name="loginModuleName" value="LDAPLogin" />
        <property name="roleClassNames" value="org.eclipse.jetty.jaas.JAASRole" />
        <property name="identityService" ref="identityService" />
    </bean>

<bean id="securityConstraint" class="org.eclipse.jetty.util.security.Constraint">
        <property name="name" value="BASIC" />
        <property name="roles" value="scientists" />

        <property name="authenticate" value="true" />
    </bean>

<bean id="securityHandler" class="org.eclipse.jetty.security.ConstraintSecurityHandler">
        <property name="loginService" ref="ldapLoginService" />
        <property name="identityService" ref="identityService" />
        <property name="realmName" value="LdapRealm" />
        <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>

最佳答案

java.lang.AbstractMethodError 表示正在调用抽象方法。可能是Jetty的JAAS模块没有启用;这意味着 JAAS 相关的 jar 在类路径中不可用。请查看以下链接中有关启用 JAAS 模块的步骤 3。

https://www.eclipse.org/jetty/documentation/9.3.x/jaas-support.html#jaas-configuration

关于java - 配置 Activemq Web 控制台以使用 LDAP 进行授权和身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40233825/

相关文章:

java - Android Nougat 在捕获视频时返回 null

authentication - apt-get install quiet 和 --assume-yes 但检查包是否已签名

ruby-on-rails - PostgreSQL 8.4的rake db :create fails,身份验证问题

active-directory - LDAP 搜索中的 CN、OU、DC 是什么?

c - 不考虑 LDAP 过滤器

Java笔记API : Create Client Session with Domino Libraries

java - 使用 Java 8 Stream 将不同的功能应用于多层 xml 数据

java - setVgap(0)、setHgap(0) 在网格布局中不起作用?

java - 使用 Spring Security 过滤器链、重定向循环进行 Wicket 授权

带有 LDAP 或 AD 的 Ruby