2015-03-30 7 views
0

Я осознал свою реализацию Loginmodule. Установлен в WildFly 8.2.0.Final как модуль. Настроить домен безопасности. добавьте jboss-web.xml в мою WebApplication в каталоге WEB-INF с именем домена безопасности.Wildfly 8 не нашел MyLoginModule

И когда я начинаю вход в веб-форме, у меня была эта ошибка в 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. Что более странно, это пару недель назад!

ответ

1

Наконец-то я нашел свой ответ. Я думал, что ошибка должна быть в конфигурации Wildfly, после долгого повтора и многих способов тестирования, я обнаружил, что моя реализация LoginModule работает только в том случае, если она находится в моей WebApplication. Но мне нужен отдельный модуль, я хочу, чтобы мой WebApp был чистым от реализации безопасности.

Так вот почему это произошло пару недель назад !, потому что этот loginModule был внутри моего webapp.

Шаги к использованию у вас есть JAAS LoginModule:

Кстати, this resource JBoss AS7 помог мне в моей ситуации

  1. реализовать свой собственный принципалов Войти модуль (как это сделать, вы можете найти в I-Net)
  2. пакета это коробит
  3. Установить как модуль в Wildfly (если вам нужно использовать его во многих проектах)

    Использование CLI установить банку в качестве модуля

    намек 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> 
    

    Я не настраивал, или я пропустил некоторый Params в CLI для этого пар, но это module="my.security.module" должен быть в вашей конфигурации.

После этого мой webapp мог сделать логин и использовать этот модуль безопасности.

Смежные вопросы