1

既存の Spring 2.5 ベースのアプリケーションを Glassfish 3.1.2.2 にアップグレードしようとしています。

このアプリケーションは、Spring 2 セキュリティを備えた Glassfish 2.1 で正常に動作しています。これにはカスタム認証設定を使用しています。

アプリケーションは GF3 に正常にデプロイされます。アプリケーションにログインしようとすると、カスタム フォーム ベースの認証ページが表示されます。認証情報が提供されると、GF3 サーバーのファイル レルムを使用する基本的な認証ポップアップが表示されます。

すでにこれらのオプションを試しましたが、うまくいきませんでした

  • 答えのないこのSOスレッド

  • Spring バージョンを Last Best Version 2.5.6.SEC03 にアップグレードします - これでも同じ問題が発生します

Spring 3 へのアップグレードは、Spring 2 にコンパイル時間の依存関係を持ついくつかのサードパーティ ベンダー ライブラリに行き詰まっているため、私たちにとってオプションではありません。

すでに Oracle からサポートを受けていますが、役に立たないことが判明しました (いつものように、彼らのサポートは期待外れです)。

この状況の回避策を知っていますか?

以下は、web.xml にあるセキュリティ構成コードです。

 <filter>
  <filter-name>springSecurityFilterChain</filter-name>
  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
 </filter>
 <filter-mapping>
  <filter-name>springSecurityFilterChain</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
  <security-constraint>
   <web-resource-collection>
    <web-resource-name>app</web-resource-name>
    <url-pattern>/app/*</url-pattern>
    <http-method>GET</http-method>
    <http-method>POST</http-method>
   </web-resource-collection>
 </security-constraint>

以下は、Spring beans.xml にあるセキュリティ構成コードです。

<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.1.xsd">

<http
    access-decision-manager-ref="accessDecisionManager" auto-config="false" realm="SPRING"
    session-fixation-protection="none"
    servlet-api-provision="true"
    entry-point-ref="authEntryPoint"
    >
    <intercept-url pattern="/Login*" filters="none"/>
    <intercept-url pattern="/styles.css" filters="none"/>
    <intercept-url pattern="/images/**" filters="none"/>
    <intercept-url pattern="/**.js" filters="none"/>        
    <intercept-url pattern="/**.html" access="users"/>
    <intercept-url pattern="/**.htmlx" access="users"/>

</http>

<authentication-manager alias="authenticationManager"/>
<!--  Override of default auth processing filter, to allow custom actions on login
    that have access to servlet stuff. This allows access to Tapestry-specifics, for
    doing things like creating the custom visit ASO. -->
<beans:bean id="customAuthFilter" class="com.mycomp.core.security.TapestryIntegrationFilter">
    <custom-filter position="AUTHENTICATION_PROCESSING_FILTER"/>
    <beans:property name="defaultTargetUrl" value="/Home.html"/>
    <beans:property name="filterProcessesUrl" value="/j_security_check"/>
    <beans:property name="authenticationFailureUrl" value="/Login.html"/>
    <beans:property name="authenticationManager" ref="authenticationManager"/>
</beans:bean>
<!-- When using a custom auth filter, you need a custom auth entry point, because you
    can't configure this using the "form-login" element under the "http" element. -->
<beans:bean id="authEntryPoint" class="org.springframework.security.ui.webapp.AuthenticationProcessingFilterEntryPoint">
    <beans:property name="loginFormUrl" value="/Login.html"/>
</beans:bean>

<!-- This, unfortunately, has to be defined to allow us to remove the "ROLE_" prefix from
    rolenames, by defining a roleVoter with an empty prefix. To wire in the voter, you
    have to define the access decision manager. -->
<beans:bean id="accessDecisionManager" class="org.springframework.security.vote.AffirmativeBased">
    <beans:property name="decisionVoters">
        <beans:list>
            <beans:bean id="roleVoter" class="org.springframework.security.vote.RoleVoter">
                <beans:property name="rolePrefix" value=""/>
            </beans:bean>
            <beans:bean id="authenticatedVoter" class="org.springframework.security.vote.AuthenticatedVoter"/>
        </beans:list>
    </beans:property>
</beans:bean>

<!-- PIMA-specific authorization provider. It gets plugged into the framework by using the
    custom-authentication-provider element. -->
<beans:bean id="pscAuthenticationProvider" class="com.myapp.core.security.CustomAuthenticationProvider">
    <beans:property name="customUserDao" ref="customUserDao"/>
    <beans:property name="passwordUtility" ref="passwordUtility"/>
    <beans:property name="transactionManager" ref="transactionManager"/>
    <custom-authentication-provider/>
</beans:bean>

<beans:bean id="passwordUtility" class="com.myapp.core.security.PasswordUtility">
    <!-- Comment/uncomment to toggle password encoding off/on -->
    <beans:property name="saltSource">
        <beans:bean class="org.springframework.security.providers.dao.salt.SystemWideSaltSource">
            <beans:property name="systemWideSalt" value="somegoodsalt"/>
        </beans:bean>
    </beans:property>
    <beans:property name="passwordEncoder">
        <beans:bean class="org.springframework.security.providers.encoding.Md5PasswordEncoder"/>
    </beans:property>
    <!--        -->
</beans:bean>

<beans:bean id="securityService" class="com.scea.core.security.SecurityService">
    <beans:property name="passwordUtility" ref="passwordUtility"/>
</beans:bean>

4

0 に答える 0