【问题标题】:Spring Security Tomcat 6.x vs Tomcat 7.x Full authentication is required to access this resourceSpring Security Tomcat 6.x vs Tomcat 7.x 访问该资源需要完全认证
【发布时间】:2015-09-22 09:07:31
【问题描述】:

目前我正在一个使用 Spring 安全登录的应用程序中工作。

Spring Security 3.2.7.RELEASE 与 Tomcat 6.0.43

我正在尝试将应用程序升级到 Tomcat 7.0.62。

以下是我的部分配置。我注意到在 Tomcat 6.0.43 中的 SecurityContextHolderAwareRequestFilter 包含身份验证:SecurityContextHolder.getContext().getAuthentication()。但是在 Tomcat 7.0.62 中运行时,它不会。

我无法弄清楚为什么会发生这种情况,因为缺少身份验证,它不断遇到完全身份验证才能访问 exceptionTranslationFilter 中的此资源。

也许有人有提示或方向可以研究?

<bean id="filterChainProxy" class="org.springframework.security.web.FilterChainProxy">
    <security:filter-chain-map path-type="ant">
        <security:filter-chain pattern="/error/*"
            filters="none" />
        <security:filter-chain pattern="/back*"
            filters="none" />
        <security:filter-chain pattern="/j_spring_security_check*"
            filters="httpSessionContextIntegrationFilter,authenticationProcessingFilter" />
        <security:filter-chain pattern="/**"
            filters="logoutFilter, httpSessionContextIntegrationFilter,securityContextHolderAwareRequestFilter,anonymousProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor" />
    </security:filter-chain-map>
</bean>

<bean id="httpSessionContextIntegrationFilter"
    class="org.springframework.security.web.context.SecurityContextPersistenceFilter" />

<bean id="securityContextHolderAwareRequestFilter"
    class="org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter" />

<bean id="anonymousProcessingFilter"
    class="org.springframework.security.web.authentication.AnonymousAuthenticationFilter">
    <property name="key" value="changeThis" />
    <property name="userAttribute" value="anonymousUser,ROLE_ANONYMOUS" />
</bean>

<bean id="exceptionTranslationFilter" class="org.springframework.security.web.access.ExceptionTranslationFilter">
    <property name="authenticationEntryPoint">
        <bean
            class="org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint">
            <property name="loginFormUrl" value="/login.jsp" />
            <property name="forceHttps" value="false" />
        </bean>
    </property>
    <property name="accessDeniedHandler">
        <bean
            class="org.springframework.security.web.access.AccessDeniedHandlerImpl">
            <property name="errorPage" value="/accessDenied.jsp" />
        </bean>
    </property>
</bean>

【问题讨论】:

    标签: tomcat spring-security


    【解决方案1】:

    在剥离我的应用程序后,我发现 web.xml 中的 cookie-config 是它不起作用的原因:

       <session-config>
            <session-timeout>600</session-timeout>
            <cookie-config>
                <http-only>true</http-only>
                <secure>true</secure>
            </cookie-config>
        </session-config>
    

    删除 cookie-config 解决了我的问题,因为显然您可以将其安排在 tomcat 的 server.xml / context.xml 中。

    【讨论】:

      猜你喜欢
      • 2016-11-11
      • 2015-01-08
      • 2018-03-04
      • 2017-08-14
      • 2016-10-03
      • 2018-09-11
      • 2019-01-01
      • 2020-11-21
      • 2022-01-03
      相关资源
      最近更新 更多