当前位置: 首页 > 知识库问答 >
问题:

JBoss LDAP登录模块问题

汪晨
2023-03-14

我正试图用LDAP登录模块配置JBoss,但到目前为止我还没有成功。当我打开我的webapp时,我得到了身份验证框,但我的凭据不起作用。

以下是我在服务器日志中看到的错误:

15:40:15,951 TRACE[org.jboss.security.auth.spi.LdapExtLoginModul](超文本传输协议--127.0.0.1-8088-1)初始化15:40:15,952 TRACE[org.jboss.security.auth.spi.LdapExtLoginModul](超文本传输协议--127.0.0.1-8088-1)安全域:LDAPAuth 15:40:15,953TRACE[org.jboss.security.auth.spi.LdapExtLoginMoules](超文本传输协议--127.0.0.1-8088-1)登录15:40:15,953 TRACE[org.jboss.security.auth.spi.LdapExtLoginMoules](超文本传输协议--127.0.0.1-8088-1)解析失败:空,禁用递归:java.lang.NumberFormatExcema: null atjava.lang.nteger.parseInt(nteger.java:454)[rt.jar: 1.7.0_79]atjava.lang.nteger.parseInt(nteger.java:527 ) [<--0_79]在org.jboss.security.auth.spi.LdapExtLoginModule.createLdapInitContext(LdapExtLoginModule.java:395)[picketbox-4.0.7。最终. jar: 4.0.7。最终]在org. jboss. security. auth. spi.LdapExtLoginModule. validatePassword(LdapExtLoginModule. java: 312)[picketbox-4.0.7.最终. jar: 4.0.7。最终]在org. jboss. security. auth. spi.登录(UsernamePasswordLoginModule. java: 267)[picketbox-4.0.7.最终. jar: 4.0.7。最终]at sun.反射。[rt. jar: 1.7.0_79]在sun.反射。[rt. jar: 1.7.0_79]在sun.反射。[rt. jar: 1.70_79]在java. lang.反射。[rt. jar: 1.70_79]在javax. security. auth. login。[rt. jar: 1.7.0_79]在javax. security. auth. login.[rt. jar: 1.7.0_79]在javax. security. auth. login.LoginContext4 USD. run(LoginContext. java: 690)[rt. jar: 1.7。0_79]在javax. security. auth. login。LoginContext4 USD. run(LoginContext. java: 688)[rt. jar: 1.7.0_79]at java. security.AccessController. doPrivileged(本地方法)[rt. jar: 1.7.0_79]在javax. security. auth. login。在javax. security. auth. login上登录[rt. jar: 1.70_79]。登录(LoginContext. java: 595)[rt. jar: 1.7。0_79]在org. jboss. security.验证。JBossCachedAuthentiationManager. defaultLogin(JBossCachedAuthentiationManager. java: 449)[picketbox-infinispan-4.0.7.最终. jar: 4.0.7。最终]在org. jboss. security.验证。JBossCachedAuthentiationManager. ProcedAnd JaasLogin(JBossCachedAuthentiationManager. java: 383)[picketbox-infinispan-4.0.7.最终. jar: 4.0.7。最终]在org. jboss. security.验证。java: 371)[picketbox-infinispan-4.0.7.最终. jar: 4.0.7。最终]在org. jboss. security.验证。JBossCachedAuthentiationManager. isValid(JBossCachedAuthentiationManager. java: 160)[picketbox-infinispan-4.0.7.最终. jar: 4.0.7。最终]在org. jboss. as. web. security。JBossWebRealm.验证(JBossWebRealm. java: 214)[jboss as-web-7.1.1.jar: 7.1.1.最终]在org. apache. catalina.验证器。[jbosswwib-7.0.13.jar:]at org. apache. catalina.验证器。[jbosSweb-7.0.13.jar:]at org. jboss. as. web. security.SecurityContextAssociationValve. invoke(SecurityContextAssociationValve. java: 153)[jboss as-web-7.1.1.jar: 7.1.1.最终]在org. apache. catalina. core.[jbosSweb-7.0.13.jar:]at org. apache. catalina. valves.[jbosSweb-7.0.13.jar:]at org. apache. catalina. core.[jbosSweb-7.0.13.jar:]at org. apache. catalina.连接器。CoyoteAdapter. service(CoyoteAdapter. java: 368)[jbosSweb-7.0.13.jar:]at org. apache. coyot. http 11.进程(Http11Processor. java: 877)[jbosSweb-7.0.13.jar:]at org. apache. coyot. http 11.[jbosSweb-7.0.13.]jar:]at org. apache. tomcat. util. net.JIoEndpoint$Worker. run(JIoEndpoint. java: 930)[jbosSweb-7.0.13。jar:]at java. lang.线程. run(线程. java: 745)[rt. jar: 1.7.0_79]

然后是错误的密码错误:

15:40:15,974 TRACE[org.jboss.security.auth.spi.LdapExtLoginMoules](超文本传输协议--127.0.0.1-8088-1)登录LDAP服务器,env={java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory, search chScope=ONELEVEL_SCOPE,java.naming.security.principal=uid=admin, ou=system,BaseCtxDN=cn=ou=人,o=七个海洋,角色属性ID=cn,角色过滤器=(唯一成员={1}),允许空密码=true,角色CtxDN=cn=ou=组,o=七个海洋,BasFilter=(uid={0}),jboss.security.security_domain=LDAPAuth,java.naming.provider.url=ldap://localhost:10389,bindDN=uid=admin,ou=系统,java.naming.security.authentication=简单,bindCredential=,java.naming.security.credentials=} 15:40:15,984 DEBUG[org.jboss.security.auth.spi.LdapExtLoginMoules](超文本传输协议--127.0.0.1-8088-1)用户名=cuckley的错误密码15:40:15,985 TRACE[org.jboss.security.auth.spi.LdapExtLoginMoules](超文本传输协议--127.0.0.1-8088-1)中止15:40:15,985 ERROR[org.jboss.security.authentication.JBossCachedAuthentiationManager](超文本传输协议--127.0.0.1-8088-1)登录失败:javax.security.auth.login.失败登录异常:密码不正确/需要密码在org.jboss.security.auth.spi.UsernamePasswordLoginModule.login(UsernamePasswordLoginModule.java:270)[picketbox-4.0.7。最终. jar: 4.0.7。最终]at sun.反射。[rt. jar: 1.7.0_79]在sun.反射。[rt. jar: 1.7.0_79]在sun.反射。[rt. jar: 1.70_79]在java. lang.反射。[rt. jar: 1.70_79]在javax. security. auth. login。[rt. jar: 1.7.0_79]在javax. security. auth. login.[rt. jar: 1.7.0_79]在javax. security. auth. login.LoginContext4 USD. run(LoginContext. java: 690)[rt. jar: 1.7。0_79]在javax. security. auth. login。LoginContext4 USD. run(LoginContext. java: 688)[rt. jar: 1.7.0_79]at java. security.AccessController. doPrivileged(本地方法)[rt. jar: 1.7.0_79]在javax. security. auth. login。在javax. security. auth. login上登录[rt. jar: 1.70_79]。登录(LoginContext. java: 595)[rt. jar: 1.7。0_79]在org. jboss. security.验证。JBossCachedAuthentiationManager. defaultLogin(JBossCachedAuthentiationManager. java: 449)[picketbox-infinispan-4.0.7.最终. jar: 4.0.7。最终]在org. jboss. security.验证。JBossCachedAuthentiationManager. ProcedAnd JaasLogin(JBossCachedAuthentiationManager. java: 383)[picketbox-infinispan-4.0.7.最终. jar: 4.0.7。最终]在org. jboss. security.验证。java: 371)[picketbox-infinispan-4.0.7.最终. jar: 4.0.7。最终]在org. jboss. security.验证。JBossCachedAuthentiationManager. isValid(JBossCachedAuthentiationManager. java: 160)[picketbox-infinispan-4.0.7.最终. jar: 4.0.7。最终]在org. jboss. as. web. security。JBossWebRealm.验证(JBossWebRealm. java: 214)[jboss as-web-7.1.1.jar: 7.1.1.最终]在org. apache. catalina.验证器。[jbosswwib-7.0.13.jar:]at org. apache. catalina.验证器。[jbosSweb-7.0.13.jar:]at org. jboss. as. web. security.SecurityContextAssociationValve. invoke(SecurityContextAssociationValve. java: 153)[jboss as-web-7.1.1.jar: 7.1.1.最终]在org. apache. catalina. core.[jbosSweb-7.0.13.jar:]at org. apache. catalina. valves.[jbosSweb-7.0.13.jar:]at org. apache. catalina. core.[jbosSweb-7.0.13.jar:]at org. apache. catalina.连接器。CoyoteAdapter. service(CoyoteAdapter. java: 368)[jbosSweb-7.0.13.jar:]at org. apache. coyot. http 11.进程(Http11Processor. java: 877)[jbosSweb-7.0.13.jar:]at org. apache. coyot. http 11.[jbosSweb-7.0.13.]jar:]at org. apache. tomcat. util. net.JIoEndpoint$Worker. run(JIoEndpoint. java: 930)[jbosSweb-7.0.13。jar:]at java. lang.线程. run(线程. java: 745)[rt. jar: 1.7.0_79]

这是我的配置文件:

网状物xml

<web-app >
<security-constraint>
    <web-resource-collection>
        <web-resource-name>HtmlAuth</web-resource-name>
        <description>application security constraints</description>
        <url-pattern>/*</url-pattern>
        <http-method>GET</http-method>
        <http-method>POST</http-method>
    </web-resource-collection>
    <auth-constraint>
        <role-name>Manager</role-name>
    </auth-constraint>
</security-constraint>
<login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>LDAPAuth realm</realm-name>
</login-config>
<security-role>
    <role-name>Manager</role-name>
</security-role>

JBossWeb。xml

<jboss-web>
<security-domain>java:/jaas/LDAPAuth</security-domain>

独立的。xml

<security-domain name="LDAPAuth">
                <authentication>
                    <login-module code="LdapExtended" flag="required">
                        <module-option name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/>
                        <module-option name="java.naming.provider.url" value="ldap://localhost:10389"/>
                        <module-option name="java.naming.security.authentication" value="simple"/>
                        <module-option name="bindDN" value="uid=admin,ou=system"/>
                        <module-option name="bindCredential" value="secret"/>
                        <module-option name="baseCtxDN" value="cn=ou=people,o=sevenSeas"/>
                        <module-option name="baseFilter" value="(uid={0})"/>
                        <module-option name="rolesCtxDN" value="cn=ou=groups,o=sevenSeas"/>
                        <module-option name="roleFilter" value="(uniquemember={1})"/>
                        <module-option name="roleAttributeID" value="cn"/>
                        <module-option name="searchScope" value="ONELEVEL_SCOPE"/>
                        <module-option name="allowEmptyPasswords" value="true"/>
                    </login-module>
                </authentication>
            </security-domain>

ApacheDS配置(以ApacheDS用户指南中的sevenSeas为例-抱歉,我没有足够的代表发布图片)

o=sevenSeas
    ou=groups
        ou=crews
            ou=HMS Bounty (2 more)
        ou=ranks
    ou=people
        cn=Cornelius Buckley (10 more)

我不知道它没有解析什么。你知道为什么这样不行吗?非常感谢。

共有1个答案

习华灿
2023-03-14

我认为基于LDAP结构,baseCtxDN和rolesCtxDN值不应该有前缀“cn=”。

 类似资料:
  • 有人可以使用jaas登录模块吗。我在看医生 我想是这些登录模块可以1.与OS用户进行身份验证2.提供该用户的组。 基本上我想通过操作系统进行身份验证。输入用户名和密码 我想用windows进行身份验证 我不想做LDAP认证只做os认证。 对于windows,有华夫饼干库可用。但我无法在使用64位机器时进行身份验证。在32位上运行良好。 对于linux,有jpam,但它不提供组。它只会检查用户名、密

  • 问题内容: 我有一个具有以下结构的小型python项目- 我计划使用默认的日志记录模块将消息打印到stdout和日志文件。要使用日志记录模块,需要进行一些初始化- 目前,在开始记录消息之前,我会在每个模块中执行此初始化。是否可以只在一个位置执行一次初始化,以便通过在整个项目中记录日志来重复使用相同的设置? 问题答案: 最佳实践是在每个模块中都定义一个记录器,如下所示: 在模块顶部附近,然后在模块中

  • 本文向大家介绍c#通用登录模块分享,包括了c#通用登录模块分享的使用技巧和注意事项,需要的朋友参考一下 // 举个例子:一个网站有用户系统、商家系统、网站后台3个系统 //可以分3个userType, user ,shop , system //网站后台一般都有角色,如admin,employee //那么网站的角色就有 user,shop,admin,employee,但是admin和emplo

  • JBoss Wildfly 8.0.0-最终 JSF 2.2.4 首先,我创建登录使用application-users.properties和application-roles.properties.添加用户add-user.bat 网状物xml 独立的。xml 登录。xhtml 所以这很有效。。现在我想使用数据库身份验证。。因此,我改变了独立。xml。 我使用此sql在数据库中插入角色和用户(

  • 我是身份验证和安全领域的新手,我试图扩展我的应用程序的身份验证机制,该机制目前提供传统的用户名/密码身份验证,以提供用户通过LDAP服务器进行身份验证。 在当前的实现中,应用程序使用服务器API的j_security_check线程对用户进行身份验证。Jboss的standalone.xml文件有一个登录模块,指向myLoginModuleClass类,该类扩展了Jboss.security.au

  • 我在上创建了作者AEM6。 在服务器上加载任何页面时,都会出现以下错误: 有人知道如何解决这个问题吗?