Sono un po 'confuso con il pattern URL in spring security. Perché, nella sicurezza http del nucleo servlet, i modelli di URL /
e /*
vengono utilizzati per specificare una o più directory. /
è utilizzato per una directory e /*
è utilizzato da molte directory. Ma nella sicurezza di primavera viene anche introdotto lo /**
, qual è lo scopo principale del modello di URL /**
in sicurezza.Spring Security: Differenza tra/** e/* url pattern in Spring-Security
risposta
Secondo la documentazione Primavera di sicurezza lo scopo principale di /**
è quello di catch-tutti i caratteri jolly:
In pratica si consiglia di utilizzare la sicurezza metodo al vostro livello di servizio, per controllare l'accesso alla vostra applicazione , e non fare interamente affidamento sull'uso dei vincoli di sicurezza definiti a livello di applicazione web. Gli URL cambiano ed è difficile tenere conto di tutti gli URL possibili che un'applicazione potrebbe supportare e come le richieste potrebbero essere manipolate. Dovresti provare a limitarti a utilizzare alcuni semplici percorsi di formica che sono semplici da comprendere. Cerca sempre di utilizzare un approccio "deny-by-default" in cui hai un carattere jolly catch-all (/ ** o **) definito ultimo e negando l'accesso.
Inoltre non bisogna dimenticare che
I modelli sono sempre valutate nell'ordine in cui sono definiti. Pertanto è importante che i modelli più specifici siano definiti più in alto nell'elenco rispetto a modelli meno specifici.
Così si può avere qualcosa di simile:
<security:http pattern="/rest-service/**" authentication-manager-ref="authenticationManager" auto-config="false" access-decision-manager-ref="accessDecisionManager">
<security:intercept-url pattern="/rest-service/report/export/xml" access="AUTH_REPORT_EXPORTXML" />
<security:intercept-url pattern="/**" access="AUTH_SYSTEM_LOGIN" />
<security:http-basic />
</security:http>
che significa che per tutte le richieste avremo bisogno di autorità AUTH_SYSTEM_LOGIN, ma in particolare per i/resto servizio/rapporto/export/xml l'utente dovrà AUTH_REPORT_EXPORTXML anche perché è definito sopra. Come dicono anche che è meglio non contare solo su questo vincoli di sicurezza che significa che è bene anche duplicare quelle in metodi di servizio con annotazione assicurato in questo modo:
@Secured("AUTH_REPORT_EXPORTXML")
In generale mi pare di capire non v'è alcuna differenza tra /*
e /**
eccetto che l'ultimo cattura tutti i caratteri jolly.
La differenza tra/* &/** è che il secondo corrisponde all'intero albero delle directory, comprese le sottodirectory, dove come * corrisponde solo al livello in cui è specificato in.
@Override
protected void configure(HttpSecurity http) throws Exception {
// ...
.antMatchers(HttpMethod.GET, "/**").permitAll
.antMatchers(HttpMethod.POST, "/*").permitAll
// ...
}
In questa configurazione qualsiasi "Get" sarà consentito di richiesta, ad esempio:
- /libro
- /libro/20
- /libro/20/autore
Quindi, tutti questi URL corrispondono al testo con il modello "/ **".
URL permessi per "Messaggio":
- /libro
- /rivista
Urls sopra match con "/ *"
- 1. Combinando DispatcherServlet, ContextLoaderListener e SpringSecurity
- 2. Utilizzo di intercept-url in Spring security
- 3. Spring Security - configurazione separata per REST API e altri URL
- 4. Spring Security e integrazione CAS
- 5. Differenza tra access = "permitAll" e filters = "none"?
- 6. Spring MVC configure url-pattern
- 7. Carica intercetta url dal DB in Spring Security 3.0.2
- 8. Filtro CORS Tomcat e Spring Security
- 9. URL Pattern Restricting in SPRING MVC
- 10. Spring 3 Security j_spring_security_check
- 11. Spring Security Accesso Ajax
- 12. Spring Session e Spring Security
- 13. Spring Security: custom userdetails
- 14. Spring WEB security: elenco di URL accessibili
- 15. Spring Security condizionale di default-target-url
- 16. SpringSecurity - Autenticazione personalizzata automatica
- 17. Differenza tra Spring IOC e Spring AOP
- 18. Come disabilitare CSRF in Spring Security 4 solo per pattern URL specifici tramite la configurazione XML?
- 19. Qual è la differenza tra Pattern Builder e Flyweight Pattern?
- 20. Spring Security 3.1
- 21. Differenza tra * e? in Spring @Scheduled (cron = ".....")
- 22. spring security 3.1. autenticazione personalizzata-failure-url con parametri url
- 23. Qual è la differenza tra @Secured e @PreAuthorize in spring security 3?
- 24. Disabilita Spring Security dal file spring-security.xml
- 25. Spring MockMVC, Spring security e Mockito
- 26. Come gestire AccessDeniedException in Spring Security?
- 27. Differenti tra Pattern modulo e Pattern Singleton?
- 28. Configurazione Spring-Boot e Spring-Security
- 29. Spring Security in una webapp stateless?
- 30. Consentire tutti gli URL tranne uno in Spring security