diff --git a/oauth2/oauth2-resource-server/src/main/java/org/springframework/security/oauth2/server/resource/web/DefaultBearerTokenResolver.java b/oauth2/oauth2-resource-server/src/main/java/org/springframework/security/oauth2/server/resource/web/DefaultBearerTokenResolver.java index 386b6ebfcf..c1b5197906 100644 --- a/oauth2/oauth2-resource-server/src/main/java/org/springframework/security/oauth2/server/resource/web/DefaultBearerTokenResolver.java +++ b/oauth2/oauth2-resource-server/src/main/java/org/springframework/security/oauth2/server/resource/web/DefaultBearerTokenResolver.java @@ -110,7 +110,7 @@ public final class DefaultBearerTokenResolver implements BearerTokenResolver { throw new OAuth2AuthenticationException(error); } - return matcher.group("token"); + return authorization.substring(7); } return null; } diff --git a/oauth2/oauth2-resource-server/src/test/java/org/springframework/security/oauth2/server/resource/web/DefaultBearerTokenResolverTests.java b/oauth2/oauth2-resource-server/src/test/java/org/springframework/security/oauth2/server/resource/web/DefaultBearerTokenResolverTests.java index f2015a6b07..3b0ba89b2a 100644 --- a/oauth2/oauth2-resource-server/src/test/java/org/springframework/security/oauth2/server/resource/web/DefaultBearerTokenResolverTests.java +++ b/oauth2/oauth2-resource-server/src/test/java/org/springframework/security/oauth2/server/resource/web/DefaultBearerTokenResolverTests.java @@ -34,7 +34,7 @@ import static org.assertj.core.api.Assertions.assertThatCode; */ public class DefaultBearerTokenResolverTests { private static final String CUSTOM_HEADER = "custom-header"; - private static final String TEST_TOKEN = "test-token"; + private static final String TEST_TOKEN = "ab5FG/ywfXPwiPc6ErRQM643QqY"; private DefaultBearerTokenResolver resolver; @@ -51,6 +51,24 @@ public class DefaultBearerTokenResolverTests { assertThat(this.resolver.resolve(request)).isEqualTo(TEST_TOKEN); } + @Test + public void resolveWhenValidHeaderIsPresentWithSingleBytePaddingIndicatorThenTokenIsResolved() { + String token = TEST_TOKEN + "="; + MockHttpServletRequest request = new MockHttpServletRequest(); + request.addHeader("Authorization", "Bearer " + token); + + assertThat(this.resolver.resolve(request)).isEqualTo(token); + } + + @Test + public void resolveWhenValidHeaderIsPresentWithTwoBytesPaddingIndicatorThenTokenIsResolved() { + String token = TEST_TOKEN + "=="; + MockHttpServletRequest request = new MockHttpServletRequest(); + request.addHeader("Authorization", "Bearer " + token); + + assertThat(this.resolver.resolve(request)).isEqualTo(token); + } + @Test public void resolveWhenCustomDefinedHeaderIsValidAndPresentThenTokenIsResolved() { this.resolver.setBearerTokenHeaderName(CUSTOM_HEADER);