Uso la sicurezza di primavera e devo utilizzare sia la catena dei filtri che lo spazio dei nomi. Namespace funziona bene ma sembra che la catena del filtro non lo faccia!
Ecco la mia configurazione. In primo luogo, dello spazio dei nomi:
Spring Security - Posso usare sia lo spazio dei nomi che la catena dei filtri?
<sec:global-method-security secured-annotations="enabled" />
<sec:http pattern="/app/login.jsp*" security="none" />
<sec:http pattern="/admin/login.jsp*" security="none" />
<sec:http pattern="/app/*.png" security="none" />
<sec:http pattern="/admin/*.png" security="none" />
<sec:http pattern="/app/**" authentication-manager-ref="authenticationManager"
access-decision-manager-ref="accessDecisionManager">
<sec:intercept-url pattern="/app/**" access="ROLE_USER" />
<sec:access-denied-handler error-page="/app/login.jsp?aer=" />
<sec:form-login login-processing-url="/app/j_spring_security_check"
always-use-default-target="true" default-target-url="/app/index.html"
login-page='/app/login.jsp' authentication-failure-url='/app/login.jsp?login_error' />
<sec:logout logout-url="/app/j_spring_security_logout"
invalidate-session="true" logout-success-url="/app/login.jsp" />
</sec:http>
<sec:http pattern="/admin/**" authentication-manager-ref="authenticationManager"
access-decision-manager-ref="accessDecisionManager">
<sec:intercept-url pattern="/admin/**" access="ROLE_ADMIN" />
<sec:access-denied-handler error-page="/admin/login.jsp?aer=" />
<sec:form-login login-processing-url="/admin/j_spring_security_check"
always-use-default-target="true" default-target-url="/admin/index.html"
login-page='/admin/login.jsp' authentication-failure-url='/admin/login.jsp?login_error' />
<sec:logout logout-url="/admin/j_spring_security_logout"
invalidate-session="true" logout-success-url="/admin/login.jsp" />
</sec:http>
Questo funziona bene. Ma ho anche bisogno di una catena di filtri per controllare altre richieste. (Queste richieste sono in modo dinamico in fase di creazione e dobbiamo controllarli in questo modo)
Questo è il mio filtro a catena:
<bean id="springSecurityFilterChain" class="org.springframework.security.web.FilterChainProxy">
<security:filter-chain-map path-type="ant">
<sec:filter-chain pattern="/css/**" filters="none" />
<sec:filter-chain pattern="/common/**" filters="none" />
<sec:filter-chain pattern="/images/**" filters="none" />
<sec:filter-chain pattern="/login.jsp*" filters="none" />
<sec:filter-chain pattern="/rest/**"
filters="
ConcurrentSessionFilter,
securityContextPersistenceFilter,
logoutFilter,
authenticationProcessingFilter,
sessionManagementFilter,
exceptionTranslationFilter,
filterSecurityInterceptor" />
</security:filter-chain-map>
</bean>
Il problema è, il filtro a catena non controlla nulla. Sono sicuro che la catena del filtro funzioni bene quando non si usano gli spazi dei nomi. Ma quando aggiungo spazi dei nomi, il problema inizia.
Perché? Non posso usarlo? o posso e devo cambiare qualcosa?
aggiornamento:
Questo il mio registro di debug quando si chiama questa risorsa: /rest/asrv/gtallmmbrsofusrgrp
DEBUG AntPathRequestMatcher - Checking match of request : '/rest/asrv/gtallmmbrsofusrgrp'; against '/app/login.jsp*'
DEBUG AntPathRequestMatcher - Checking match of request : '/rest/asrv/gtallmmbrsofusrgrp'; against '/admin/login.jsp*'
DEBUG AntPathRequestMatcher - Checking match of request : '/rest/asrv/gtallmmbrsofusrgrp'; against '/app/*.png'
DEBUG AntPathRequestMatcher - Checking match of request : '/rest/asrv/gtallmmbrsofusrgrp'; against '/admin/*.png'
DEBUG AntPathRequestMatcher - Checking match of request : '/rest/asrv/gtallmmbrsofusrgrp'; against '/app/**'
DEBUG AntPathRequestMatcher - Checking match of request : '/rest/asrv/gtallmmbrsofusrgrp'; against '/admin/**'
DEBUG FilterChainProxy - /rest/asrv/gtallmmbrsofusrgrp has no matching filters
Dal modo in cui si sta configurando lo spazio dei nomi, presumo che si stia utilizzando SS 3.1?In base alla specificità della tua domanda, sembra che tu sappia cosa stai facendo riguardo alla configurazione: stai tentando di applicare questa catena di filtri * anziché * le dichiarazioni dello spazio dei nomi o in aggiunta a queste? –
Sto tentando di aggiungere questi filtri allo spazio dei nomi. –
Ho aggiornato la mia domanda @PeterMularien. Ora puoi vedere che filter-chain-proxy non funziona. È la mia configurazione che causa questo problema? Devo cambiare l'ordine? –