Jboss wildfly中用于JASPI身份验证的自定义身份验证模块

Jboss wildfly中用于JASPI身份验证的自定义身份验证模块,jboss,wildfly-10,jaspic,Jboss,Wildfly 10,Jaspic,我需要在wildfly中使用自定义身份验证模块进行JASPI身份验证。My standalone-full.xml: <security-domain name="testlogin" cache-type="default"> <authentication-jaspi> <login-module-stack name="1m-stack"> <login-module code="com.test.TestLoginModu

我需要在wildfly中使用自定义身份验证模块进行JASPI身份验证。My standalone-full.xml:

<security-domain name="testlogin" cache-type="default">
  <authentication-jaspi>
    <login-module-stack name="1m-stack">
      <login-module code="com.test.TestLoginModule" flag="required" module="in.hrworks.testmodule">
        <module-option name="dsJndiName" value="java:jboss/datasources/Appscale"/>        
      </login-module>
    </login-module-stack>
    <auth-module code="com.test.JASPILoginModule" login-module-stack-ref="1m-stack"/>
  </authentication-jaspi>
</security-domain>
我还在.hrworks.testmodule中添加了自定义模块
,作为
org.jboss.as.security
模块的
module.xml
中的依赖项。但事实并非如此;似乎没有任何效果

我犯了什么错误吗

一些更新:

在为
org.jboss.modules
启用跟踪级别日志记录后,我发现我的模块缺少对
javax.security.auth.message.api
的依赖项。但在添加此依赖项后,我得到了一个不同的错误:

2017-07-13 13:17:11,801 ERROR [io.undertow.request] (default task-2) UT005023: Exception handling request to /hrworks/: java.lang.NoClassDefFoundError: Could not initialize class com.test.JASPILoginModule
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.jboss.security.auth.message.config.JBossServerAuthConfig.createSAM(JBossServerAuthConfig.java:245)
at org.jboss.security.auth.message.config.JBossServerAuthConfig.getAuthContext(JBossServerAuthConfig.java:178)
at org.jboss.security.plugins.auth.JASPIServerAuthenticationManager.secureResponse(JASPIServerAuthenticationManager.java:158)
at org.wildfly.extension.undertow.security.jaspi.JASPICSecureResponseHandler.handleRequest(JASPICSecureResponseHandler.java:35)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)
at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)
at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:202)
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:805)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

知道原因是什么吗?

尝试在
auth module
定义中添加模块引用,例如:
不,这似乎也不起作用。我遇到了相同的错误。请尝试在您的
auth module
定义中添加模块引用,例如:
否,这似乎也不起作用。我也犯了同样的错误。
Context Path:
/hrworks

Servlet Path:
/index.jsp

Path Info:
null

Query String:
null

Stack Trace
java.lang.NoClassDefFoundError: Failed to link com/test/JASPILoginModule (Module "in.hrworks.testmodule:main" from local module loader @543788f3 (finder: local module finder @6d3af739 (roots: /usr/local/wildfly-10.1.0.Final/modules,/usr/local/wildfly-10.1.0.Final/modules/system/layers/base))): javax/security/auth/message/module/ServerAuthModule
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)        
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
java.lang.reflect.Constructor.newInstance(Constructor.java:423)
org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:446)
org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:274)
org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:78)
org.jboss.modules.Module.loadModuleClass(Module.java:606)
org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
2017-07-13 13:17:11,801 ERROR [io.undertow.request] (default task-2) UT005023: Exception handling request to /hrworks/: java.lang.NoClassDefFoundError: Could not initialize class com.test.JASPILoginModule
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.jboss.security.auth.message.config.JBossServerAuthConfig.createSAM(JBossServerAuthConfig.java:245)
at org.jboss.security.auth.message.config.JBossServerAuthConfig.getAuthContext(JBossServerAuthConfig.java:178)
at org.jboss.security.plugins.auth.JASPIServerAuthenticationManager.secureResponse(JASPIServerAuthenticationManager.java:158)
at org.wildfly.extension.undertow.security.jaspi.JASPICSecureResponseHandler.handleRequest(JASPICSecureResponseHandler.java:35)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)
at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)
at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:202)
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:805)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)