|
@@ -17,6 +17,7 @@
|
|
package org.springframework.security.config.web.server
|
|
package org.springframework.security.config.web.server
|
|
|
|
|
|
import org.springframework.security.web.server.authorization.ServerAccessDeniedHandler
|
|
import org.springframework.security.web.server.authorization.ServerAccessDeniedHandler
|
|
|
|
+import org.springframework.security.web.server.csrf.CsrfWebFilter
|
|
import org.springframework.security.web.server.csrf.ServerCsrfTokenRepository
|
|
import org.springframework.security.web.server.csrf.ServerCsrfTokenRepository
|
|
import org.springframework.security.web.server.util.matcher.ServerWebExchangeMatcher
|
|
import org.springframework.security.web.server.util.matcher.ServerWebExchangeMatcher
|
|
|
|
|
|
@@ -30,12 +31,15 @@ import org.springframework.security.web.server.util.matcher.ServerWebExchangeMat
|
|
* @property csrfTokenRepository the [ServerCsrfTokenRepository] used to persist the CSRF token.
|
|
* @property csrfTokenRepository the [ServerCsrfTokenRepository] used to persist the CSRF token.
|
|
* @property requireCsrfProtectionMatcher the [ServerWebExchangeMatcher] used to determine when CSRF protection
|
|
* @property requireCsrfProtectionMatcher the [ServerWebExchangeMatcher] used to determine when CSRF protection
|
|
* is enabled.
|
|
* is enabled.
|
|
|
|
+ * @property tokenFromMultipartDataEnabled if true, the [CsrfWebFilter] should try to resolve the actual CSRF
|
|
|
|
+ * token from the body of multipart data requests.
|
|
*/
|
|
*/
|
|
@ServerSecurityMarker
|
|
@ServerSecurityMarker
|
|
class ServerCsrfDsl {
|
|
class ServerCsrfDsl {
|
|
var accessDeniedHandler: ServerAccessDeniedHandler? = null
|
|
var accessDeniedHandler: ServerAccessDeniedHandler? = null
|
|
var csrfTokenRepository: ServerCsrfTokenRepository? = null
|
|
var csrfTokenRepository: ServerCsrfTokenRepository? = null
|
|
var requireCsrfProtectionMatcher: ServerWebExchangeMatcher? = null
|
|
var requireCsrfProtectionMatcher: ServerWebExchangeMatcher? = null
|
|
|
|
+ var tokenFromMultipartDataEnabled: Boolean? = null
|
|
|
|
|
|
private var disabled = false
|
|
private var disabled = false
|
|
|
|
|
|
@@ -51,6 +55,7 @@ class ServerCsrfDsl {
|
|
accessDeniedHandler?.also { csrf.accessDeniedHandler(accessDeniedHandler) }
|
|
accessDeniedHandler?.also { csrf.accessDeniedHandler(accessDeniedHandler) }
|
|
csrfTokenRepository?.also { csrf.csrfTokenRepository(csrfTokenRepository) }
|
|
csrfTokenRepository?.also { csrf.csrfTokenRepository(csrfTokenRepository) }
|
|
requireCsrfProtectionMatcher?.also { csrf.requireCsrfProtectionMatcher(requireCsrfProtectionMatcher) }
|
|
requireCsrfProtectionMatcher?.also { csrf.requireCsrfProtectionMatcher(requireCsrfProtectionMatcher) }
|
|
|
|
+ tokenFromMultipartDataEnabled?.also { csrf.tokenFromMultipartDataEnabled(tokenFromMultipartDataEnabled!!) }
|
|
if (disabled) {
|
|
if (disabled) {
|
|
csrf.disable()
|
|
csrf.disable()
|
|
}
|
|
}
|