2016-04-28 4 views
0

Мы мигрирует наш код из JBoss 4.2.1 AS и Spring Security 3.2.9 для JBoss Wildfly 10.0.0 и Spring Security 4.0.4Spring Security JaasAuthenticationProvider не видит Wildfly 10 SecurityDomain

Я имеющий следующая проблема с моей интеграцией Spring Security JaasAuthenticationProvider с областями безопасности JBoss Wildfly 10, определенными в файле standalone.xml: он не выполняет LoginModules, определенные в моем домене безопасности, на самом деле единственное, что, по-видимому, находит, это ClientLoginModule, определенный в auth.conf от wildfly 10.0. 0 picketbox-4.9.4.jar (который по умолчанию используется).

Моя конфигурация домена безопасности заключается в следующем:

  <security-domain name="mysecdomain" cache-type="default"> 
       <authentication> 
        <login-module code="LdapExtended" flag="sufficient"> 
         <module-options.../> 
        </login-module> 
       </authentication> 
      </security-domain> 

И мой JaasAuthenticationProvider в моем контексте приложения развернутого приложения:

<bean id="jaasAuthenticationProvider" class=org.springframework.security.authentication.jaas.JaasAuthenticationProvider"> 
    <property name="loginConfig" value="WEB-INF/login.conf" /> 
    <property name="loginContextName" value="mysecdomain"/> 
    <property name="callbackHandlers"> 
     <list> 
      <bean class="org.springframework.security.authentication.jaas.JaasNameCallbackHandler" /> 
      <bean class="org.springframework.security.authentication.jaas.JaasPasswordCallbackHandler" /> 
     </list> 
    </property> 
    <property name="authorityGranters"> 
     <list> 
      <bean class="com.my.MyAuthorityGranter" /> 
     </list> 
    </property> 
</bean> 

Но когда я выполняю определенную jaasAuthenticationProvider, он выводит следующее Wildfly's server.log:

2016-04-27 03:37:18,367 TRACE [org.jboss.security] (default task-4) PBOX00221: Begin getAppConfigurationEntry(mysecdomain), size: 1 
2016-04-27 03:37:18,368 TRACE [org.jboss.security] (default task-4) PBOX00222: getAppConfigurationEntry(mysecdomain), no entry found, trying parent config null 
2016-04-27 03:37:18,368 TRACE [org.jboss.security] (default task-4) PBOX00223: getAppConfigurationEntry(mysecdomain), no entry in parent config, trying default other 
2016-04-27 03:37:18,368 TRACE [org.jboss.security] (default task-4) PBOX00224: End getAppConfigurationEntry(mysecdomain), AuthInfo: AppConfigurationEntry[]: 
[0] 
LoginModule Class: org.jboss.security.ClientLoginModule 
ControlFlag: LoginModuleControlFlag: required 
Options: 

2016-04-27 03:37:18,374 DEBUG [org.jboss.security] (default task-4) PBOX00350: Module option: jboss.security.security_domain, value: other 
2016-04-27 03:37:18,374 DEBUG [org.jboss.security] (default task-4) PBOX00350: Module option: restore-login-identity, value: null 
2016-04-27 03:37:18,374 DEBUG [org.jboss.security] (default task-4) PBOX00350: Module option: password-stacking, value: null 
2016-04-27 03:37:18,376 TRACE [org.jboss.security] (default task-4) PBOX00240: Begin login method 
2016-04-27 03:37:18,387 TRACE [org.jboss.security] (default task-4) PBOX00351: Obtained auth info from handler, principal: xxxxx, credential class: class [C 
2016-04-27 03:37:18,388 TRACE [org.jboss.security] (default task-4) PBOX00241: End login method, isValid: true 
2016-04-27 03:37:18,388 TRACE [org.jboss.security] (default task-4) PBOX00242: Begin commit method, overall result: true 

Так что, очевидно, я делаю что-то неправильно, но не могу понять, что? Выше хорошо работали в JBoss 4.2.1 и политики приложений, определенные в login-config.xml, но не более

ответ

0

Нашли решение: в новой Spring Security (4.0.4 была версия здесь) необходимо добавить следующее свойство: JaasConfigurationProvider, в противном случае он будет удалить уже загруженные конфигурации (Security-домены) и заменить их конфигурация picketbox по умолчанию:

<property name="refreshConfigurationOnStartup" value="false"/> 

Теперь он работает как шарм и поставщик может увидеть все определенную безопасность-домены

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