From 6f379aa9074e629870fc84b2c2be606320aee035 Mon Sep 17 00:00:00 2001 From: Josh Cummings <3627351+jzheaux@users.noreply.github.com> Date: Tue, 14 Jan 2025 16:06:18 -0700 Subject: [PATCH] Add Serializable to Csrf Components Issue gh-16276 --- ...ingSecurityCoreVersionSerializableTests.java | 11 +++++++++++ ...k.security.web.csrf.CsrfException.serialized | Bin 0 -> 10718 bytes ...ecurity.web.csrf.DefaultCsrfToken.serialized | Bin 0 -> 172 bytes ...eb.csrf.InvalidCsrfTokenException.serialized | Bin 0 -> 10882 bytes ...eb.csrf.MissingCsrfTokenException.serialized | Bin 0 -> 10868 bytes ...ity.web.server.csrf.CsrfException.serialized | Bin 0 -> 10725 bytes ....web.server.csrf.DefaultCsrfToken.serialized | Bin 0 -> 179 bytes .../security/web/csrf/CsrfException.java | 6 +++++- .../csrf/CsrfTokenRequestAttributeHandler.java | 1 + .../security/web/csrf/DefaultCsrfToken.java | 6 +++++- .../web/csrf/InvalidCsrfTokenException.java | 6 +++++- .../web/csrf/LazyCsrfTokenRepository.java | 1 + .../security/web/server/csrf/CsrfException.java | 6 +++++- .../web/server/csrf/DefaultCsrfToken.java | 6 +++++- 14 files changed, 38 insertions(+), 5 deletions(-) create mode 100644 config/src/test/resources/serialized/6.4.x/org.springframework.security.web.csrf.CsrfException.serialized create mode 100644 config/src/test/resources/serialized/6.4.x/org.springframework.security.web.csrf.DefaultCsrfToken.serialized create mode 100644 config/src/test/resources/serialized/6.4.x/org.springframework.security.web.csrf.InvalidCsrfTokenException.serialized create mode 100644 config/src/test/resources/serialized/6.4.x/org.springframework.security.web.csrf.MissingCsrfTokenException.serialized create mode 100644 config/src/test/resources/serialized/6.4.x/org.springframework.security.web.server.csrf.CsrfException.serialized create mode 100644 config/src/test/resources/serialized/6.4.x/org.springframework.security.web.server.csrf.DefaultCsrfToken.serialized diff --git a/config/src/test/java/org/springframework/security/SpringSecurityCoreVersionSerializableTests.java b/config/src/test/java/org/springframework/security/SpringSecurityCoreVersionSerializableTests.java index 5072da9f5c..aedbd7096c 100644 --- a/config/src/test/java/org/springframework/security/SpringSecurityCoreVersionSerializableTests.java +++ b/config/src/test/java/org/springframework/security/SpringSecurityCoreVersionSerializableTests.java @@ -134,6 +134,10 @@ import org.springframework.security.web.authentication.rememberme.InvalidCookieE import org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationException; import org.springframework.security.web.authentication.session.SessionAuthenticationException; import org.springframework.security.web.authentication.www.NonceExpiredException; +import org.springframework.security.web.csrf.CsrfException; +import org.springframework.security.web.csrf.DefaultCsrfToken; +import org.springframework.security.web.csrf.InvalidCsrfTokenException; +import org.springframework.security.web.csrf.MissingCsrfTokenException; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.fail; @@ -344,6 +348,13 @@ class SpringSecurityCoreVersionSerializableTests { (r) -> new SessionAuthenticationException("message")); generatorByClassName.put(NonceExpiredException.class, (r) -> new NonceExpiredException("message", new IOException("fail"))); + generatorByClassName.put(CsrfException.class, (r) -> new CsrfException("message")); + generatorByClassName.put(org.springframework.security.web.server.csrf.CsrfException.class, (r) -> new org.springframework.security.web.server.csrf.CsrfException("message")); + generatorByClassName.put(InvalidCsrfTokenException.class, (r) -> new InvalidCsrfTokenException(new DefaultCsrfToken("header", "parameter", "token"), "token")); + generatorByClassName.put(MissingCsrfTokenException.class, (r) -> new MissingCsrfTokenException("token")); + generatorByClassName.put(DefaultCsrfToken.class, (r) -> new DefaultCsrfToken("header", "parameter", "token")); + generatorByClassName.put(org.springframework.security.web.server.csrf.DefaultCsrfToken.class, (r) -> new org.springframework.security.web.server.csrf.DefaultCsrfToken("header", "parameter", "token")); + } @ParameterizedTest diff --git a/config/src/test/resources/serialized/6.4.x/org.springframework.security.web.csrf.CsrfException.serialized b/config/src/test/resources/serialized/6.4.x/org.springframework.security.web.csrf.CsrfException.serialized new file mode 100644 index 0000000000000000000000000000000000000000..55eddf9e9f0cc57d99e9e0d3087dcfdc91e76bc9 GIT binary patch literal 10718 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 NAHMl#$dBql{XdTZ9fAM= literal 0 HcmV?d00001 diff --git a/config/src/test/resources/serialized/6.4.x/org.springframework.security.web.csrf.DefaultCsrfToken.serialized b/config/src/test/resources/serialized/6.4.x/org.springframework.security.web.csrf.DefaultCsrfToken.serialized new file mode 100644 index 0000000000000000000000000000000000000000..693e898c3136a9e65df47fdc39ca758e46cbb6bb GIT binary patch literal 172 zcmZ4UmVvdnh`}tsC|$3(peQphJ*_A)H?=&!C|j>MHMz7Xv!qh5JT*x#xwt4z&m}c2 zu{5W|8ORRF&rZ#YdcXaI{-WPknHZRT7`QT06H`)){D9g^7=(PX63Y_xa}x8?^@B@5 t=34tO@D?P33@?EwDrBf*VDw>NEdiMX=2R4vFt9;PDPiD*D=vYm0RXq3J!Jp@ literal 0 HcmV?d00001 diff --git a/config/src/test/resources/serialized/6.4.x/org.springframework.security.web.csrf.InvalidCsrfTokenException.serialized b/config/src/test/resources/serialized/6.4.x/org.springframework.security.web.csrf.InvalidCsrfTokenException.serialized new file mode 100644 index 0000000000000000000000000000000000000000..18f8a50a348f8192945f88a31a68885efa09c1ac GIT binary patch literal 10882 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 uE~Q~cmg1EtfP`dwa?2!lDzHIR9M<(O2LA literal 0 HcmV?d00001 diff --git a/config/src/test/resources/serialized/6.4.x/org.springframework.security.web.server.csrf.CsrfException.serialized b/config/src/test/resources/serialized/6.4.x/org.springframework.security.web.server.csrf.CsrfException.serialized new file mode 100644 index 0000000000000000000000000000000000000000..6556a08dde7b2047a4672d9548a33672217a0d56 GIT binary patch literal 10725 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 Qzt#JLH~$3r(QGjLA9Z*jUjP6A literal 0 HcmV?d00001 diff --git a/config/src/test/resources/serialized/6.4.x/org.springframework.security.web.server.csrf.DefaultCsrfToken.serialized b/config/src/test/resources/serialized/6.4.x/org.springframework.security.web.server.csrf.DefaultCsrfToken.serialized new file mode 100644 index 0000000000000000000000000000000000000000..9cff958c4907a45a8acbea834b1143808b70d1bc GIT binary patch literal 179 zcmZ4UmVvdnh`~0$C|$3(peQphJ*_A)H?=&!C|j>MHMz7Xv!qh5JT(c(DJn}X(n~Hb zO4D;mO-n4zDRBm}L-Mmz^H|&qw@6J;D`a9|_F>@4NKH&hE%F1JQo^s5oAXRL{T9_9Rs5e18WJ$BrvC csrfTokenSupplier; diff --git a/web/src/main/java/org/springframework/security/web/csrf/DefaultCsrfToken.java b/web/src/main/java/org/springframework/security/web/csrf/DefaultCsrfToken.java index 682be4b1dd..122d95d1ce 100644 --- a/web/src/main/java/org/springframework/security/web/csrf/DefaultCsrfToken.java +++ b/web/src/main/java/org/springframework/security/web/csrf/DefaultCsrfToken.java @@ -16,6 +16,8 @@ package org.springframework.security.web.csrf; +import java.io.Serial; + import org.springframework.util.Assert; /** @@ -24,9 +26,11 @@ import org.springframework.util.Assert; * @author Rob Winch * @since 3.2 */ -@SuppressWarnings("serial") public final class DefaultCsrfToken implements CsrfToken { + @Serial + private static final long serialVersionUID = 6552658053267913685L; + private final String token; private final String parameterName; diff --git a/web/src/main/java/org/springframework/security/web/csrf/InvalidCsrfTokenException.java b/web/src/main/java/org/springframework/security/web/csrf/InvalidCsrfTokenException.java index 0c57e5a604..bb4afac31d 100644 --- a/web/src/main/java/org/springframework/security/web/csrf/InvalidCsrfTokenException.java +++ b/web/src/main/java/org/springframework/security/web/csrf/InvalidCsrfTokenException.java @@ -16,6 +16,8 @@ package org.springframework.security.web.csrf; +import java.io.Serial; + import jakarta.servlet.http.HttpServletRequest; /** @@ -25,9 +27,11 @@ import jakarta.servlet.http.HttpServletRequest; * @author Rob Winch * @since 3.2 */ -@SuppressWarnings("serial") public class InvalidCsrfTokenException extends CsrfException { + @Serial + private static final long serialVersionUID = -7745955098435417418L; + /** * @param expectedAccessToken * @param actualAccessToken diff --git a/web/src/main/java/org/springframework/security/web/csrf/LazyCsrfTokenRepository.java b/web/src/main/java/org/springframework/security/web/csrf/LazyCsrfTokenRepository.java index 5a6a63f4bb..a8326fa2a7 100644 --- a/web/src/main/java/org/springframework/security/web/csrf/LazyCsrfTokenRepository.java +++ b/web/src/main/java/org/springframework/security/web/csrf/LazyCsrfTokenRepository.java @@ -159,6 +159,7 @@ public final class LazyCsrfTokenRepository implements CsrfTokenRepository { } + @SuppressWarnings("serial") private static final class SaveOnAccessCsrfToken implements CsrfToken { private transient CsrfTokenRepository tokenRepository; diff --git a/web/src/main/java/org/springframework/security/web/server/csrf/CsrfException.java b/web/src/main/java/org/springframework/security/web/server/csrf/CsrfException.java index 631c5b7fdc..bdb693e95c 100644 --- a/web/src/main/java/org/springframework/security/web/server/csrf/CsrfException.java +++ b/web/src/main/java/org/springframework/security/web/server/csrf/CsrfException.java @@ -16,6 +16,8 @@ package org.springframework.security.web.server.csrf; +import java.io.Serial; + import org.springframework.security.access.AccessDeniedException; import org.springframework.security.web.csrf.CsrfToken; @@ -25,9 +27,11 @@ import org.springframework.security.web.csrf.CsrfToken; * @author Rob Winch * @since 3.2 */ -@SuppressWarnings("serial") public class CsrfException extends AccessDeniedException { + @Serial + private static final long serialVersionUID = -8209680716517631141L; + public CsrfException(String message) { super(message); } diff --git a/web/src/main/java/org/springframework/security/web/server/csrf/DefaultCsrfToken.java b/web/src/main/java/org/springframework/security/web/server/csrf/DefaultCsrfToken.java index eb49369e6f..2a32018a5c 100644 --- a/web/src/main/java/org/springframework/security/web/server/csrf/DefaultCsrfToken.java +++ b/web/src/main/java/org/springframework/security/web/server/csrf/DefaultCsrfToken.java @@ -16,6 +16,8 @@ package org.springframework.security.web.server.csrf; +import java.io.Serial; + import org.springframework.util.Assert; /** @@ -24,9 +26,11 @@ import org.springframework.util.Assert; * @author Rob Winch * @since 5.0 */ -@SuppressWarnings("serial") public final class DefaultCsrfToken implements CsrfToken { + @Serial + private static final long serialVersionUID = 308340117851874929L; + private final String token; private final String parameterName;