java - 基于 JBoss 表单的身份验证失败

标签 java mysql authentication jboss

我正在尝试调试在尝试登录我的 JAVA Web 应用程序时遇到的错误。列似乎有一些问题。这是堆栈跟踪:

anager] (http--127.0.0.1-8080-4) Login failure: javax.security.auth.login.LoginE
xception: PB00019: Processing Failed:Query failed
        at org.jboss.security.auth.spi.DbUtil.getRoleSets(DbUtil.java:166) [pick
etbox-4.0.6.final.jar:4.0.6.final]
        at org.jboss.security.auth.spi.Util.getRoleSets(Util.java:158) [picketbo
x-4.0.6.final.jar:4.0.6.final]
        at org.jboss.security.auth.spi.DatabaseServerLoginModule.getRoleSets(Dat
abaseServerLoginModule.java:265) [picketbox-4.0.6.final.jar:4.0.6.final]
        at org.jboss.security.auth.spi.AbstractServerLoginModule.commit(Abstract
ServerLoginModule.java:228) [picketbox-4.0.6.final.jar:4.0.6.final]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1
.7.0_51]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:57) [rt.jar:1.7.0_51]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43) [rt.jar:1.7.0_51]
        at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_51]
        at javax.security.auth.login.LoginContext.invoke(LoginContext.java:762)
[rt.jar:1.7.0_51]
        at javax.security.auth.login.LoginContext.access$000(LoginContext.java:2
03) [rt.jar:1.7.0_51]
        at javax.security.auth.login.LoginContext$4.run(LoginContext.java:690) [
rt.jar:1.7.0_51]
        at javax.security.auth.login.LoginContext$4.run(LoginContext.java:688) [
rt.jar:1.7.0_51]
        at java.security.AccessController.doPrivileged(Native Method) [rt.jar:1.
7.0_51]
        at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:6
87) [rt.jar:1.7.0_51]
        at javax.security.auth.login.LoginContext.login(LoginContext.java:596) [
rt.jar:1.7.0_51]
        at org.jboss.security.authentication.JBossCachedAuthenticationManager.de
faultLogin(JBossCachedAuthenticationManager.java:449) [picketbox-infinispan-4.0.
6.final.jar:4.0.6.final]
        at org.jboss.security.authentication.JBossCachedAuthenticationManager.pr
oceedWithJaasLogin(JBossCachedAuthenticationManager.java:383) [picketbox-infinis
pan-4.0.6.final.jar:4.0.6.final]
        at org.jboss.security.authentication.JBossCachedAuthenticationManager.au
thenticate(JBossCachedAuthenticationManager.java:371) [picketbox-infinispan-4.0.
6.final.jar:4.0.6.final]
        at org.jboss.security.authentication.JBossCachedAuthenticationManager.is
Valid(JBossCachedAuthenticationManager.java:160) [picketbox-infinispan-4.0.6.fin
al.jar:4.0.6.final]
        at org.jboss.as.web.security.JBossWebRealm.authenticate(JBossWebRealm.ja
va:215) [jboss-as-web-7.1.0.Final.jar:7.1.0.Final]
        at org.apache.catalina.authenticator.FormAuthenticator.authenticate(Form
Authenticator.java:280) [jbossweb-7.0.10.Final.jar:]
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authentica
torBase.java:381) [jbossweb-7.0.10.Final.jar:]
        at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmC
loserValve.java:50) [jboss-as-jpa-7.1.0.Final.jar:7.1.0.Final]
        at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(Secu
rityContextAssociationValve.java:154) [jboss-as-web-7.1.0.Final.jar:7.1.0.Final]

        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:155) [jbossweb-7.0.10.Final.jar:]
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:102) [jbossweb-7.0.10.Final.jar:]
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:109) [jbossweb-7.0.10.Final.jar:]
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:368) [jbossweb-7.0.10.Final.jar:]
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
:877) [jbossweb-7.0.10.Final.jar:]
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce
ss(Http11Protocol.java:671) [jbossweb-7.0.10.Final.jar:]
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:93
0) [jbossweb-7.0.10.Final.jar:]
        at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_51]
Caused by: java.sql.SQLException: Column Index out of range, 2 > 1.
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073) [mysql
-connector-java-5.1.30.jar:]
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987) [mysql-
connector-java-5.1.30.jar:]
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982) [mysql-
connector-java-5.1.30.jar:]
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927) [mysql-
connector-java-5.1.30.jar:]
        at com.mysql.jdbc.ResultSetImpl.checkColumnBounds(ResultSetImpl.java:818
) [mysql-connector-java-5.1.30.jar:]
        at com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:565
1) [mysql-connector-java-5.1.30.jar:]
        at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5570) [mysq
l-connector-java-5.1.30.jar:]
        at org.jboss.jca.adapters.jdbc.WrappedResultSet.getString(WrappedResultS
et.java:1338)
        at org.jboss.security.auth.spi.DbUtil.getRoleSets(DbUtil.java:135) [pick
etbox-4.0.6.final.jar:4.0.6.final]
        ... 31 more

这是我的安全域:

        <security-domain name="product_app_realm">
            <authentication>
                <login-module code="Database" flag="required">
                    <module-option name="dsJndiName" value="java:/AuthorityDS"/>
                    <module-option name="principalsQuery" value="select password from product_database.users where username=?"/>
                    <module-option name="rolesQuery" value="select role from product_database.roles where username=?"/>
                </login-module>
            </authentication>
        </security-domain>

知道问题出在哪里,我的安全域设置有问题吗?问题的根源似乎指向我在用户或角色表中的列的问题。

最佳答案

您需要从 rolesQuery 返回两个值。

The prepared statement query equivalent to: select Role, RoleGroup from Roles where PrincipalID=?. If not specified this is the exact prepared statement that will be used.

尝试将您的查询更改为

select role, 'Roles' from product_database.roles where username=?

关于java - 基于 JBoss 表单的身份验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23725929/

相关文章:

validation - Identity Server 3 访问 token 验证端点失败,受众验证失败

java - 字母的随机排列

java - 什么是 NullPointerException,我该如何解决?

mysql - 单个 MySQL 查询中的两个 LEFT JOIN

mysql - Docker:MySQL准备就绪时, “wait-for-it”脚本无法启动应用程序

authentication - Grails代理身份验证错误

java - JSP 在开普勒 (Eclipse Standard 4.3) 中以黑白方式打开

Java (android) 重用对象

mysql - 如何在子查询中使用 HAVING 作为 Select 语句的一部分

python - 在 Django 中创建用户时出现以下错误 : type object 'User' has no attribute 'objects'