Wildfly 8找不到MyLoginModule

时间:2015-03-30 05:08:07

标签: authentication authorization wildfly-8

我实现了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中时 更奇怪的是,它在几周前就开始了!

1 个答案:

答案 0 :(得分:1)

最后,我找到了答案。我认为错误应该是Wildfly的配置,经过长时间的研究和多种测试方法后,我发现我的LoginModule实现只有在它存在于我的WebApplication中才有效。但我想要一个单独的模块,我希望我的WebApp能够从安全实现中清除。

所以这就是几周前它出现的原因!',因为这个loginModule在我的webapp中。

使用您自己的JAAS loginModule的步骤:

顺便说一下,this resource JBoss AS7在我的情况下对我帮助很大

  1. 实施自己的校长,登录模块(如何在i-net中找到)
  2. 将此包装到jar
  3. 将类似模块安装到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

  4. 在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"应该在你的配置中。

  5. 之后,我的webapp可以登录并使用此安全模块。