Parcourir la source

Fix Serializable tests

Issue gh-17880
Joe Grandja il y a 2 semaines
Parent
commit
8399bc161d
28 fichiers modifiés avec 171 ajouts et 0 suppressions
  1. 171 0
      config/src/test/java/org/springframework/security/SerializationSamples.java
  2. BIN
      config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.OAuth2Authorization$Token.serialized
  3. BIN
      config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.OAuth2Authorization.serialized
  4. BIN
      config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.OAuth2AuthorizationConsent.serialized
  5. BIN
      config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.OAuth2AuthorizationServerMetadata.serialized
  6. BIN
      config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.OAuth2TokenIntrospection.serialized
  7. BIN
      config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.OAuth2TokenType.serialized
  8. BIN
      config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.authentication.OAuth2AccessTokenAuthenticationToken.serialized
  9. BIN
      config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.authentication.OAuth2AuthorizationCodeRequestAuthenticationToken.serialized
  10. BIN
      config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.authentication.OAuth2AuthorizationConsentAuthenticationToken.serialized
  11. BIN
      config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.authentication.OAuth2AuthorizationGrantAuthenticationToken.serialized
  12. BIN
      config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.authentication.OAuth2ClientAuthenticationToken.serialized
  13. BIN
      config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.authentication.OAuth2DeviceAuthorizationConsentAuthenticationToken.serialized
  14. BIN
      config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.authentication.OAuth2DeviceAuthorizationRequestAuthenticationToken.serialized
  15. BIN
      config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.authentication.OAuth2DeviceVerificationAuthenticationToken.serialized
  16. BIN
      config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.authentication.OAuth2PushedAuthorizationRequestAuthenticationToken.serialized
  17. BIN
      config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.authentication.OAuth2TokenIntrospectionAuthenticationToken.serialized
  18. BIN
      config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.authentication.OAuth2TokenRevocationAuthenticationToken.serialized
  19. BIN
      config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.client.RegisteredClient.serialized
  20. BIN
      config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.oidc.OidcClientRegistration.serialized
  21. BIN
      config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.oidc.OidcProviderConfiguration.serialized
  22. BIN
      config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.oidc.authentication.OidcClientRegistrationAuthenticationToken.serialized
  23. BIN
      config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.oidc.authentication.OidcLogoutAuthenticationToken.serialized
  24. BIN
      config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.oidc.authentication.OidcUserInfoAuthenticationToken.serialized
  25. BIN
      config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.settings.AuthorizationServerSettings.serialized
  26. BIN
      config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.settings.ClientSettings.serialized
  27. BIN
      config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.settings.OAuth2TokenFormat.serialized
  28. BIN
      config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.settings.TokenSettings.serialized

+ 171 - 0
config/src/test/java/org/springframework/security/SerializationSamples.java

@@ -19,6 +19,7 @@ package org.springframework.security;
 import java.io.IOException;
 import java.io.Serializable;
 import java.lang.reflect.Field;
+import java.security.Principal;
 import java.time.Instant;
 import java.util.Collection;
 import java.util.Date;
@@ -122,6 +123,8 @@ import org.springframework.security.oauth2.client.oidc.session.OidcSessionInform
 import org.springframework.security.oauth2.client.oidc.session.TestOidcSessionInformations;
 import org.springframework.security.oauth2.client.registration.ClientRegistration;
 import org.springframework.security.oauth2.client.registration.TestClientRegistrations;
+import org.springframework.security.oauth2.core.AuthorizationGrantType;
+import org.springframework.security.oauth2.core.ClientAuthenticationMethod;
 import org.springframework.security.oauth2.core.DefaultOAuth2AuthenticatedPrincipal;
 import org.springframework.security.oauth2.core.OAuth2AccessToken;
 import org.springframework.security.oauth2.core.OAuth2AuthenticatedPrincipal;
@@ -156,6 +159,34 @@ import org.springframework.security.oauth2.jwt.JwtEncodingException;
 import org.springframework.security.oauth2.jwt.JwtException;
 import org.springframework.security.oauth2.jwt.JwtValidationException;
 import org.springframework.security.oauth2.jwt.TestJwts;
+import org.springframework.security.oauth2.server.authorization.OAuth2Authorization;
+import org.springframework.security.oauth2.server.authorization.OAuth2AuthorizationConsent;
+import org.springframework.security.oauth2.server.authorization.OAuth2AuthorizationServerMetadata;
+import org.springframework.security.oauth2.server.authorization.OAuth2TokenIntrospection;
+import org.springframework.security.oauth2.server.authorization.OAuth2TokenType;
+import org.springframework.security.oauth2.server.authorization.TestOAuth2Authorizations;
+import org.springframework.security.oauth2.server.authorization.authentication.OAuth2AccessTokenAuthenticationToken;
+import org.springframework.security.oauth2.server.authorization.authentication.OAuth2AuthorizationCodeRequestAuthenticationToken;
+import org.springframework.security.oauth2.server.authorization.authentication.OAuth2AuthorizationConsentAuthenticationToken;
+import org.springframework.security.oauth2.server.authorization.authentication.OAuth2AuthorizationGrantAuthenticationToken;
+import org.springframework.security.oauth2.server.authorization.authentication.OAuth2ClientAuthenticationToken;
+import org.springframework.security.oauth2.server.authorization.authentication.OAuth2DeviceAuthorizationConsentAuthenticationToken;
+import org.springframework.security.oauth2.server.authorization.authentication.OAuth2DeviceAuthorizationRequestAuthenticationToken;
+import org.springframework.security.oauth2.server.authorization.authentication.OAuth2DeviceVerificationAuthenticationToken;
+import org.springframework.security.oauth2.server.authorization.authentication.OAuth2PushedAuthorizationRequestAuthenticationToken;
+import org.springframework.security.oauth2.server.authorization.authentication.OAuth2TokenIntrospectionAuthenticationToken;
+import org.springframework.security.oauth2.server.authorization.authentication.OAuth2TokenRevocationAuthenticationToken;
+import org.springframework.security.oauth2.server.authorization.client.RegisteredClient;
+import org.springframework.security.oauth2.server.authorization.client.TestRegisteredClients;
+import org.springframework.security.oauth2.server.authorization.oidc.OidcClientRegistration;
+import org.springframework.security.oauth2.server.authorization.oidc.OidcProviderConfiguration;
+import org.springframework.security.oauth2.server.authorization.oidc.authentication.OidcClientRegistrationAuthenticationToken;
+import org.springframework.security.oauth2.server.authorization.oidc.authentication.OidcLogoutAuthenticationToken;
+import org.springframework.security.oauth2.server.authorization.oidc.authentication.OidcUserInfoAuthenticationToken;
+import org.springframework.security.oauth2.server.authorization.settings.AuthorizationServerSettings;
+import org.springframework.security.oauth2.server.authorization.settings.ClientSettings;
+import org.springframework.security.oauth2.server.authorization.settings.OAuth2TokenFormat;
+import org.springframework.security.oauth2.server.authorization.settings.TokenSettings;
 import org.springframework.security.oauth2.server.resource.BearerTokenError;
 import org.springframework.security.oauth2.server.resource.BearerTokenErrors;
 import org.springframework.security.oauth2.server.resource.InvalidBearerTokenException;
@@ -374,6 +405,146 @@ final class SerializationSamples {
 		generatorByClassName.put(DPoPAuthenticationToken.class,
 				(r) -> applyDetails(new DPoPAuthenticationToken("token", "proof", "method", "uri")));
 
+		// oauth2-authorization-server
+		RegisteredClient registeredClient = TestRegisteredClients.registeredClient().build();
+		OAuth2Authorization authorization = TestOAuth2Authorizations.authorization(registeredClient).build();
+		OAuth2AuthorizationRequest authorizationRequest = authorization
+			.getAttribute(OAuth2AuthorizationRequest.class.getName());
+		Authentication principal = authorization.getAttribute(Principal.class.getName());
+		generatorByClassName.put(RegisteredClient.class, (r) -> registeredClient);
+		generatorByClassName.put(OAuth2Authorization.class, (r) -> authorization);
+		generatorByClassName.put(OAuth2Authorization.Token.class, (r) -> authorization.getAccessToken());
+		generatorByClassName.put(OAuth2AuthorizationConsent.class,
+				(r) -> OAuth2AuthorizationConsent.withId("registeredClientId", "principalName")
+					.scope("scope1")
+					.scope("scope2")
+					.build());
+		generatorByClassName.put(OAuth2AuthorizationCodeRequestAuthenticationToken.class, (r) -> {
+			OAuth2AuthorizationCodeRequestAuthenticationToken authenticationToken = new OAuth2AuthorizationCodeRequestAuthenticationToken(
+					"authorizationUri", "clientId", principal, "redirectUri", "state", authorizationRequest.getScopes(),
+					authorizationRequest.getAdditionalParameters());
+			authenticationToken.setDetails(details);
+			return authenticationToken;
+		});
+		generatorByClassName.put(OAuth2PushedAuthorizationRequestAuthenticationToken.class, (r) -> {
+			OAuth2PushedAuthorizationRequestAuthenticationToken authenticationToken = new OAuth2PushedAuthorizationRequestAuthenticationToken(
+					"authorizationUri", "clientId", principal, "redirectUri", "state", authorizationRequest.getScopes(),
+					authorizationRequest.getAdditionalParameters());
+			authenticationToken.setDetails(details);
+			return authenticationToken;
+		});
+		generatorByClassName.put(OAuth2AuthorizationGrantAuthenticationToken.class, (r) -> {
+			org.springframework.security.oauth2.server.authorization.authentication.OAuth2AuthorizationCodeAuthenticationToken authenticationToken = new org.springframework.security.oauth2.server.authorization.authentication.OAuth2AuthorizationCodeAuthenticationToken(
+					"code", principal, "redirectUri", new HashMap<>());
+			authenticationToken.setDetails(details);
+			return authenticationToken;
+		});
+		generatorByClassName.put(OAuth2AuthorizationConsentAuthenticationToken.class, (r) -> {
+			OAuth2AuthorizationConsentAuthenticationToken authenticationToken = new OAuth2AuthorizationConsentAuthenticationToken(
+					"authorizationUri", "clientId", principal, "state", authorizationRequest.getScopes(),
+					authorizationRequest.getAdditionalParameters());
+			authenticationToken.setDetails(details);
+			return authenticationToken;
+		});
+		generatorByClassName.put(OAuth2DeviceAuthorizationRequestAuthenticationToken.class, (r) -> {
+			OAuth2DeviceAuthorizationRequestAuthenticationToken authenticationToken = new OAuth2DeviceAuthorizationRequestAuthenticationToken(
+					principal, "authorizationUri", authorizationRequest.getScopes(),
+					authorizationRequest.getAdditionalParameters());
+			authenticationToken.setDetails(details);
+			return authenticationToken;
+		});
+		generatorByClassName.put(OAuth2DeviceAuthorizationConsentAuthenticationToken.class, (r) -> {
+			OAuth2DeviceAuthorizationConsentAuthenticationToken authenticationToken = new OAuth2DeviceAuthorizationConsentAuthenticationToken(
+					"authorizationUri", "clientId", principal, "userCode", "state", authorizationRequest.getScopes(),
+					authorizationRequest.getAdditionalParameters());
+			authenticationToken.setDetails(details);
+			return authenticationToken;
+		});
+		generatorByClassName.put(OAuth2DeviceVerificationAuthenticationToken.class, (r) -> {
+			OAuth2DeviceVerificationAuthenticationToken authenticationToken = new OAuth2DeviceVerificationAuthenticationToken(
+					principal, "userCode", new HashMap<>());
+			authenticationToken.setDetails(details);
+			return authenticationToken;
+		});
+		generatorByClassName.put(OAuth2TokenIntrospectionAuthenticationToken.class, (r) -> {
+			OAuth2TokenIntrospectionAuthenticationToken authenticationToken = new OAuth2TokenIntrospectionAuthenticationToken(
+					"token", principal, "tokenTypeHint", new HashMap<>());
+			authenticationToken.setDetails(details);
+			return authenticationToken;
+		});
+		generatorByClassName.put(OAuth2TokenRevocationAuthenticationToken.class, (r) -> {
+			OAuth2TokenRevocationAuthenticationToken authenticationToken = new OAuth2TokenRevocationAuthenticationToken(
+					"token", principal, "tokenTypeHint");
+			authenticationToken.setDetails(details);
+			return authenticationToken;
+		});
+		OidcClientRegistration oidcClientRegistration = OidcClientRegistration.builder()
+			.grantType(AuthorizationGrantType.AUTHORIZATION_CODE.getValue())
+			.scope("scope1")
+			.redirectUri("https://localhost/oauth2/callback")
+			.build();
+		generatorByClassName.put(OidcClientRegistration.class, (r) -> oidcClientRegistration);
+		generatorByClassName.put(OidcClientRegistrationAuthenticationToken.class, (r) -> {
+			OidcClientRegistrationAuthenticationToken authenticationToken = new OidcClientRegistrationAuthenticationToken(
+					principal, oidcClientRegistration);
+			authenticationToken.setDetails(details);
+			return authenticationToken;
+		});
+		generatorByClassName.put(OidcUserInfoAuthenticationToken.class, (r) -> {
+			OidcUserInfo userInfo = OidcUserInfo.builder().subject("subject").name("name").build();
+			OidcUserInfoAuthenticationToken authenticationToken = new OidcUserInfoAuthenticationToken(principal,
+					userInfo);
+			authenticationToken.setDetails(details);
+			return authenticationToken;
+		});
+		generatorByClassName.put(OidcLogoutAuthenticationToken.class, (r) -> {
+			OidcIdToken idToken = OidcIdToken.withTokenValue("tokenValue")
+				.issuedAt(Instant.now())
+				.expiresAt(Instant.now().plusSeconds(60))
+				.build();
+			OidcLogoutAuthenticationToken authenticationToken = new OidcLogoutAuthenticationToken(idToken, principal,
+					"sessionId", "clientId", "postLogoutRedirectUri", "state");
+			authenticationToken.setDetails(details);
+			return authenticationToken;
+		});
+		generatorByClassName.put(OAuth2ClientAuthenticationToken.class, (r) -> {
+			OAuth2ClientAuthenticationToken authenticationToken = new OAuth2ClientAuthenticationToken(registeredClient,
+					ClientAuthenticationMethod.CLIENT_SECRET_BASIC, "credentials");
+			authenticationToken.setDetails(details);
+			return authenticationToken;
+		});
+		generatorByClassName.put(OAuth2TokenIntrospection.class,
+				(r) -> OAuth2TokenIntrospection.builder().active(true).clientId("clientId").build());
+		generatorByClassName.put(OAuth2AccessTokenAuthenticationToken.class, (r) -> {
+			OAuth2AccessTokenAuthenticationToken authenticationToken = new OAuth2AccessTokenAuthenticationToken(
+					registeredClient, principal, authorization.getAccessToken().getToken());
+			authenticationToken.setDetails(details);
+			return authenticationToken;
+		});
+		generatorByClassName.put(OAuth2AuthorizationServerMetadata.class,
+				(r) -> OAuth2AuthorizationServerMetadata.builder()
+					.issuer("https://localhost")
+					.authorizationEndpoint("https://localhost/oauth2/authorize")
+					.tokenEndpoint("https://localhost/oauth2/token")
+					.responseType("code")
+					.build());
+		generatorByClassName.put(OidcProviderConfiguration.class,
+				(r) -> OidcProviderConfiguration.builder()
+					.issuer("https://localhost")
+					.authorizationEndpoint("https://localhost/oauth2/authorize")
+					.tokenEndpoint("https://localhost/oauth2/token")
+					.jwkSetUrl("https://localhost/oauth2/jwks")
+					.responseType("code")
+					.subjectType("subjectType")
+					.idTokenSigningAlgorithm("RS256")
+					.build());
+		generatorByClassName.put(OAuth2TokenType.class, (r) -> OAuth2TokenType.ACCESS_TOKEN);
+		generatorByClassName.put(OAuth2TokenFormat.class, (r) -> OAuth2TokenFormat.SELF_CONTAINED);
+		generatorByClassName.put(AuthorizationServerSettings.class,
+				(r) -> AuthorizationServerSettings.builder().build());
+		generatorByClassName.put(ClientSettings.class, (r) -> ClientSettings.builder().build());
+		generatorByClassName.put(TokenSettings.class, (r) -> TokenSettings.builder().build());
+
 		// config
 		generatorByClassName.put(AlreadyBuiltException.class, (r) -> new AlreadyBuiltException("message"));
 

BIN
config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.OAuth2Authorization$Token.serialized


BIN
config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.OAuth2Authorization.serialized


BIN
config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.OAuth2AuthorizationConsent.serialized


BIN
config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.OAuth2AuthorizationServerMetadata.serialized


BIN
config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.OAuth2TokenIntrospection.serialized


BIN
config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.OAuth2TokenType.serialized


BIN
config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.authentication.OAuth2AccessTokenAuthenticationToken.serialized


BIN
config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.authentication.OAuth2AuthorizationCodeRequestAuthenticationToken.serialized


BIN
config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.authentication.OAuth2AuthorizationConsentAuthenticationToken.serialized


BIN
config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.authentication.OAuth2AuthorizationGrantAuthenticationToken.serialized


BIN
config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.authentication.OAuth2ClientAuthenticationToken.serialized


BIN
config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.authentication.OAuth2DeviceAuthorizationConsentAuthenticationToken.serialized


BIN
config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.authentication.OAuth2DeviceAuthorizationRequestAuthenticationToken.serialized


BIN
config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.authentication.OAuth2DeviceVerificationAuthenticationToken.serialized


BIN
config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.authentication.OAuth2PushedAuthorizationRequestAuthenticationToken.serialized


BIN
config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.authentication.OAuth2TokenIntrospectionAuthenticationToken.serialized


BIN
config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.authentication.OAuth2TokenRevocationAuthenticationToken.serialized


BIN
config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.client.RegisteredClient.serialized


BIN
config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.oidc.OidcClientRegistration.serialized


BIN
config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.oidc.OidcProviderConfiguration.serialized


BIN
config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.oidc.authentication.OidcClientRegistrationAuthenticationToken.serialized


BIN
config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.oidc.authentication.OidcLogoutAuthenticationToken.serialized


BIN
config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.oidc.authentication.OidcUserInfoAuthenticationToken.serialized


BIN
config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.settings.AuthorizationServerSettings.serialized


BIN
config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.settings.ClientSettings.serialized


BIN
config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.settings.OAuth2TokenFormat.serialized


BIN
config/src/test/resources/serialized/7.0.x/org.springframework.security.oauth2.server.authorization.settings.TokenSettings.serialized