我实现了Loginmodule的实现。安装在WildFly 8.2.0.Final中作为模块。配置安全域。 将jboss-web.xml添加到WEB-INF目录下的WebApplication中,名称为security-domain。
当我在网络表单上启动登录时,我在wildfly中遇到了这个错误:
PBOX000206: Login failure: javax.security.auth.login.LoginException: unable to find LoginModule class: my.webapp.auth.WildLoginModule from [Module "deployment.MyWebApp.war:main" from Service Module Loader]
为什么找不到我的班级?当这个类驻留在wildfly模块中的jar中时 更奇怪的是,它在几周前就开始了!
答案 0 :(得分:1)
最后,我找到了答案。我认为错误应该是Wildfly的配置,经过长时间的研究和多种测试方法后,我发现我的LoginModule实现只有在它存在于我的WebApplication中才有效。但我想要一个单独的模块,我希望我的WebApp能够从安全实现中清除。
所以这就是几周前它出现的原因!',因为这个loginModule在我的webapp中。
使用您自己的JAAS loginModule的步骤:
顺便说一下,this resource JBoss AS7在我的情况下对我帮助很大
将类似模块安装到Wildfly中(如果您需要在许多项目中使用它)
使用CLI安装jar作为模块
来自resource
的提示要记住的事情
当您创建自己的模块时,不要忘记在" org.picketbox"上添加依赖项。和" javax.api"在自定义模块的module.xml中。
module add --name=my.security.module --resources=/path/to/MyLoginModule.jar --dependencies=javax.api,org.picketbox,my.dependencies
在Wildfly中添加安全域(GUI,CLI或手册版standalone.xml)
我的错误就在这一步。我的sec.domain看起来像这样:
<security-domain name="mysecdomain" cache-type="default">
<authentication>
<login-module code="my.code.MyLoginModule" flag="required">
<module-option name="jndiDb" value="java:/datasources/myDataSource"/>
<module-option name="userQuery" value=""/>
<module-option name="roleQuery" value=""/>
</login-module>
</authentication>
</security-domain>
这就是为什么它无法找到我的代码,它不知道在哪个模块中找到我的代码。所以standalone.xml的这一部分应如下所示:
<security-domain name="mysecdomain" cache-type="default">
<authentication>
<login-module code="my.code.MyLoginModule" flag="required" ___module="my.security.module"___ >
<module-option name="jndiDb" value="java:/datasources/myDataSource"/>
<module-option name="userQuery" value=""/>
<module-option name="roleQuery" value=""/>
</login-module>
</authentication>
</security-domain>
我没有配置,或者我错过了这个参数的CLI中的一些参数,但是这个module="my.security.module"
应该在你的配置中。
之后,我的webapp可以登录并使用此安全模块。