Java Wildfly-FailedLoginException:密码不正确/需要密码异常

Java Wildfly-FailedLoginException:密码不正确/需要密码异常,java,oracle,rest,authentication,wildfly-8,Java,Oracle,Rest,Authentication,Wildfly 8,我有一个用JAVA编写并部署在Wildfly 8.2上的小型REST应用程序。我收到错误FailedLoginException:密码不正确/尝试使用javax安全库登录时需要密码。这里的原因是什么 我使用url从浏览器发送请求 以下是LoginService类: package com.om.targin.admin; import org.jboss.security.auth.callback.UsernamePasswordHandler; import javax.security

我有一个用JAVA编写并部署在Wildfly 8.2上的小型REST应用程序。我收到错误FailedLoginException:密码不正确/尝试使用javax安全库登录时需要密码。这里的原因是什么

我使用url从浏览器发送请求

以下是LoginService类:

package com.om.targin.admin;

import org.jboss.security.auth.callback.UsernamePasswordHandler;

import javax.security.auth.login.LoginContext;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.core.Response;

@Path("/loginService")
public class LoginService {

    //  private static final Log logger = LogFactory.getFactory().getLog(LoginService.class.getName());

    @GET
    @Path("/login")
    public Response login() {
        //   logger.info("LoginService login is called.");
        try {
            LoginContext lc = null;
            String username = "UseR_U";
            String password = "hashedpassword";
            UsernamePasswordHandler handler = new UsernamePasswordHandler(username,
                    password == null ? null : password.toCharArray());
            lc = new LoginContext("targin-client", handler);
            lc.login();
            return Response.status(Response.Status.OK).build();
        }
        catch (Exception e){
            // logger.error("Exception has been occurred."+e.getMessage());
            return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build();
        }
    }
}
重新应用程序类:

package com.om.targin.admin;

import org.glassfish.jersey.server.ResourceConfig;

import javax.ws.rs.ApplicationPath;

@ApplicationPath("/")
public class RestApplication extends ResourceConfig {

    public RestApplication() {
        packages("com.om.targin.admin");
    }
}
登录模块:

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="org.jboss.login">
    <resources>
    <resource-root path="SPLoginModule.jar"/>
    </resources>

    <dependencies>
       <module name="org.picketbox"/>
       <module name="javax.api"/>
    </dependencies>
</module>
WEB-INF下的jboss-deploymente-structure.xml:

<jboss-deployment-structure>
    <deployment>
        <dependencies>
            <module name="org.jboss.login" />
        </dependencies>
    </deployment>
</jboss-deployment-structure>
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web version="7.1" xmlns="http://www.jboss.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee http://www.jboss.org/schema/jbossas/jboss-web_7_1.xsd">
    <security-domain>java:/jaas/targin-server</security-domain>
</jboss-web>

提前谢谢。

我想好了。实际上,这是一个很小很愚蠢的错误

在我的LoginService类中,当它创建Logincontext时,我将name参数作为“targin client”传入,而我应该作为“targin server”传入,这是我为应用程序定义的登录模块

        LoginContext lc = null;
        String username = "UseR_U";
        String password = "hashedpassword";
        UsernamePasswordHandler handler = new UsernamePasswordHandler(username,
                password == null ? null : password.toCharArray());
        lc = new LoginContext("targin-client", handler);
        lc.login();
正确的版本是:

        lc = new LoginContext("targin-server", handler);
在创建登录上下文时,我们传入一个安全域,该域指向在Wildfly模块下定义并处理身份验证的登录模块。另外,请注意,我正在使用Wildfly的picketbox安全库。SPLoginModule类从此库继承

干杯

<datasource jta="true" jndi-name="java:/OracleDS" pool-name="OracleDS" enabled="true" use-ccm="true">
                    <connection-url>jdbc:oracle:thin:@10.23.4.567:1521:DBSID</connection-url>
                    <driver-class>oracle.jdbc.OracleDriver</driver-class>
                    <driver>oracle</driver>
                    <security>
                        <user-name>dbuser</user-name>
                        <password>dbpass</password>
                    </security>
                    <validation>
                        <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker"/>
                        <background-validation>true</background-validation>
                        <stale-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleStaleConnectionChecker"/>
                        <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter"/>
                    </validation>
                </datasource>
Exception e: javax.security.auth.login.FailedLoginException: PBOX000070: Password invalid/Password required

org.jboss.security.auth.spi.UsernamePasswordLoginModule.login(UsernamePasswordLoginModule.java:284)"
org.jboss.as.security.RealmDirectLoginModule.login(RealmDirectLoginModule.java:147)"
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)"
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)"
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)"
java.lang.reflect.Method.invoke(Unknown Source)"
javax.security.auth.login.LoginContext.invoke(Unknown Source)"
javax.security.auth.login.LoginContext.access$000(Unknown Source)"
javax.security.auth.login.LoginContext$4.run(Unknown Source)"
javax.security.auth.login.LoginContext$4.run(Unknown Source)"
"java.security.AccessController.doPrivileged(Native Method)"
javax.security.auth.login.LoginContext.invokePriv(Unknown Source)"
javax.security.auth.login.LoginContext.login(Unknown Source)"
com.om.targin.admin.LoginService.login(LoginService.java:26)"
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)"
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)"
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)"
java.lang.reflect.Method.invoke(Unknown Source)"
org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:137)"
org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:296)"
org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:250)"
org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:237)"
org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:356)"
org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:179)"
org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:220)"
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56)"
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51)"
javax.servlet.http.HttpServlet.service(HttpServlet.java:790)"
io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:86)"
io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)"
io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)"
org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)"
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)"
io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)"
io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)"
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)"
io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)"
io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)"
io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58)"
io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:70)"
io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76)"
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)"
org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)"
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)"
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)"
io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:261)"
io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:248)"
io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:77)"
io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:167)"
io.undertow.server.Connectors.executeRootHandler(Connectors.java:199)"
io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:761)"
java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)"
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)"
java.lang.Thread.run(Unknown Source)
        LoginContext lc = null;
        String username = "UseR_U";
        String password = "hashedpassword";
        UsernamePasswordHandler handler = new UsernamePasswordHandler(username,
                password == null ? null : password.toCharArray());
        lc = new LoginContext("targin-client", handler);
        lc.login();
        lc = new LoginContext("targin-server", handler);