Домен безопасности Wildfly 8 работает для простого приложения, но не для более сложного

Я изменяю существующее веб-приложение Java EE 7, чтобы использовать стандартный механизм домена безопасности Java EE для аутентификации в Active Directory. Я начал с создания простого веб-приложения для проверки концепции, чтобы проверить все и заставить конфигурацию Wildfly работать, а затем применил изменения к основному приложению. Сейчас я нахожусь в ситуации, когда тестовое приложение работает, а основное нет.

Как заставить основное приложение правильно работать с доменом безопасности? Как я могу диагностировать эту проблему? Что может помешать процессу безопасности?

Вот моя конфигурация области и домена в standalone.xml:

<security-realms>
    <!-- Default realms omitted -->
    <security-realm name="ActiveDirectoryRealm">
        <authentication>
            <ldap connection="MyAD" base-dn="OU=Test Users,OU=AU,DC=company,DC=int">
                <username-filter attribute="sAMAccountName"/>
            </ldap>
        </authentication>
    </security-realm>
</security-realms>
<outbound-connections>
    <ldap name="MyAD" url="ldap://company.int" search-dn="CN=Wildfly AS,OU=Service Accounts,OU=AU,DC=company,DC=int" search-credential="xxx"/>
</outbound-connections>

<!-- Skip many lines -->

<security-domain name="active-directory" cache-type="default">
    <authentication>
        <login-module code="Remoting" flag="optional">
            <module-option name="password-stacking" value="useFirstPass"/>
        </login-module>
        <login-module code="RealmDirect" flag="sufficient">
            <module-option name="password-stacking" value="useFirstPass"/>
            <module-option name="realm" value="ActiveDirectoryRealm"/>
        </login-module>
    </authentication>
</security-domain>

А вот мой файл jboss-web.xml (одинаковый в обоих приложениях):

<jboss-web>
    <security-domain>active-directory</security-domain>
</jboss-web>

И, наконец, биты безопасности web.xml (одинаковые в обоих приложениях, за исключением ограниченных шаблонов URL):

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Unauthenticated Resources</web-resource-name>
        <url-pattern>/css/*</url-pattern>
        <url-pattern>/font/*</url-pattern>
        <url-pattern>/images/*</url-pattern>
        <url-pattern>/js/*</url-pattern>
        <url-pattern>/lib/*</url-pattern>
        <url-pattern>/partials/*</url-pattern>
    </web-resource-collection>
</security-constraint>

<security-constraint>
    <web-resource-collection>
        <web-resource-name>All Resources</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>*</role-name>
    </auth-constraint>
</security-constraint>

<login-config>
    <auth-method>FORM</auth-method>
    <realm-name>My Realm</realm-name>
    <form-login-config>
        <form-login-page>/Login.html</form-login-page>
        <form-error-page>/NoAccess.html</form-error-page>
    </form-login-config>
</login-config>

<security-role>
    <role-name>*</role-name>
</security-role>

Некоторые факты о приложениях:

  • Оба приложения используют файл web.xml Servlet 3.1 и упакованы как WAR.
  • Оба приложения активируют подсистемы Undertow и EJB, а основное приложение также активирует JPA.
  • Я развернул оба приложения в одном и том же экземпляре Wildfly 8.2, работающем на моем локальном компьютере.
  • Основное приложение использует Spring (поскольку мы используем Spring-Data и Spring-MVC), а также EJB, в то время как тестовое приложение не использует Spring.

Тестовое приложение работает отлично, но основное приложение всегда не может войти в систему (меня перенаправляют на страницу формы-ошибки). Я включил вход в систему TRACE для org.jboss.security, но все, что я получаю, когда пытаюсь войти, это:

2015-07-22 13:36:54,903 TRACE [org.jboss.security] (default task-1) PBOX000354: Setting security roles ThreadLocal: null

Для дополнительных странностей я могу установить значение домена безопасности в jboss-web.xml либо на active-directory, либо на java:/jaas/active-directory, и оба работают, однако использование префикса в основном приложении приводит к сбою его запуска. Я знаю, что префикс больше не поддерживается в Wildfly 8 но не уверен, почему поведение двух приложений отличается.

Заранее спасибо за любую помощь и предложения, всем очень признателен!


person Doughnuts    schedule 22.07.2015    source источник
comment
› стандартный механизм домена безопасности Java EE - к вашему сведению, это не какой-либо стандарт Java EE, а специфичный для JBoss;)   -  person Arjan Tijms    schedule 27.07.2015


Ответы (1)


Что ж, это смущает... оказывается, проблема была в моей форме входа. Я думал, что они одинаковы между двумя приложениями, но в основном приложении в именах полей ввода был начальный пробел.

person Doughnuts    schedule 22.07.2015