既存の(古い)アプリケーションでSpringMVCを使用してREST APIを開発し、春のセキュリティを使用した認証認証。しかし、私は上記のエラーになっています。子コンテキスト用Spring Security - フィルタチェーン内の他のパターンの前にユニバーサルマッチパターン( '/ **')が定義されています
ここでは、REST APIに特定のコンテキストを使用し、ルートコンテキストを古いアプリケーションに保持することを試みています。私はアプリケーションのREST APIの部分だけにセキュリティを持ちたいと思っています。私の春-のsecurity.xml
私のセキュリティ設定クラス
@Configuration
@ImportResource({"classpath:/spring-security.xml" })
public class SecurityConfig {}
を見つけてください、私のWeb.xml
<servlet>
<servlet-name>mobileDispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>2</load-on-startup>
<init-param>
<param-name>contextClass</param-name>
<param-value>
org.springframework.web.context.support.AnnotationConfigWebApplicationContext
</param-value>
</init-param>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>a.b.c.d.WebConfig</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>mobileDispatcher</servlet-name>
<url-pattern>/mobile/*</url-pattern>
</servlet-mapping>
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<param-name>contextAttribute</param-name>
<param-value>org.springframework.web.servlet.FrameworkServlet.CONTEXT.mobileDispatcher</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/mobile/*</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
を見つけてください
(../mobile/**で始まるURLの場合)
<sec:http auto-config='true'>
<sec:intercept-url pattern="/mobile/**" access="ROLE_USER" />
</sec:http>
<beans:bean id="inMemoryAuthenticationUserDetailsService"
class="a.b.c.d.InMemoryAuthenticationUserDetailsService"/>
<beans:bean id="preAuthenticatedProcessingFilterEntryPoint"
class="org.springframework.security.web.authentication.Http403ForbiddenEntryPoint"/>
<beans:bean id="preAuthenticatedAuthenticationProvider"
class="org.springframework.security.web.authentication.preauth.PreAuthenticatedAuthenticationProvider">
<beans:property name="preAuthenticatedUserDetailsService" ref="inMemoryAuthenticationUserDetailsService"/>
</beans:bean>
<beans:bean id="simpleAttributes2GrantedAuthoritiesMapper"
class="org.springframework.security.core.authority.mapping.SimpleAttributes2GrantedAuthoritiesMapper">
<beans:property name="attributePrefix" value=""/>
</beans:bean>
<beans:bean id="webXmlMappableAttributesRetriever"
class="org.springframework.security.web.authentication.preauth.j2ee.WebXmlMappableAttributesRetriever"/>
<beans:bean id="j2eeBasedPreAuthenticatedWebAuthenticationDetailsSource"
class="org.springframework.security.web.authentication.preauth.j2ee.J2eeBasedPreAuthenticatedWebAuthenticationDetailsSource">
<beans:property name="mappableRolesRetriever" ref="webXmlMappableAttributesRetriever"/>
<beans:property name="userRoles2GrantedAuthoritiesMapper" ref="simpleAttributes2GrantedAuthoritiesMapper"/>
</beans:bean>
<beans:bean id="preAuthFilter"
class="org.springframework.security.web.authentication.preauth.j2ee.J2eePreAuthenticatedProcessingFilter">
<beans:property name="authenticationManager" ref="appControlAuthenticationManager"/>
<beans:property name="authenticationDetailsSource"
ref="j2eeBasedPreAuthenticatedWebAuthenticationDetailsSource"/>
</beans:bean>
<sec:authentication-manager alias="appControlAuthenticationManager">
<sec:authentication-provider ref="preAuthenticatedAuthenticationProvider"/>
</sec:authentication-manager>
この問題の原因は何ですか?スタックオーバーフローで同様の質問を行った後は、セキュリティコンテキストをルートコンテキストに配置する必要があるように感じますが、既存のアプリケーションで使用されているので、ルートコンテキストに触れたくありません。