2012-03-06 74 views

回答

0

它總是通過一個過濾器,如果它是正確映射

0

如前所述,要確保一切,需要通過彈簧的安全過濾器去:

這裏樣本的過濾器是如何映射到servlet前面(用於授權端點的Spring MVC DispatcherServlet) 您可以將相同的過濾器映射到任何其他servlet,例如映射到您配置的jersey servlet。

/WEB-INF/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> 
    <servlet-name>spring-dispatcher</servlet-name> 
    <dispatcher>FORWARD</dispatcher> 
    <dispatcher>REQUEST</dispatcher> 
</filter-mapping> 

<servlet> 
    <servlet-name>spring-dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/spring-mvc-dispatcher-servlet.xml</param-value> 
    </init-param> 
</servlet> 

<servlet-mapping> 
    <servlet-name>spring-dispatcher</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

確保每次調用 '/ *',或任何模式,被過濾您使用http從春天的安全命名空間和一個名爲OAuth2AuthenticationProcessingFilter過濾器,將提防承載 Authorization頭,你需要這樣的事情在你的/WEB-INF/spring-mvc-dispatcher-servlet.xml或您的彈簧安全配置在哪裏:

<http pattern="/**" 
     create-session="never" 
     authentication-manager-ref="userAuthenticationManager" 
     access-decision-manager-ref="accessDecisionManager" 
     use-expressions="true"> 

    <anonymous enabled="false" /> 
    <custom-filter ref="oAuth2AuthenticationFilter" position="PRE_AUTH_FILTER" /> 
    <access-denied-handler ref="oAuthAccessDeniedHandler" /> 
    <intercept-url pattern="/**" access="isAuthenticated()" />   
</http> 

<beans:bean id="oAuth2AuthenticationFilter" class="org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationProcessingFilter"> 
    <beans:property name="authenticationManager" ref="userAuthenticationManager"/> 
    <beans:property name="authenticationEntryPoint" ref="oAuthAuthenticationEntryPoint"/> 
</beans:bean>