parent
d38dabac02
commit
d3bea02124
|
@ -38,7 +38,7 @@ import static org.springframework.security.oauth2.server.resource.BearerTokenErr
|
|||
public final class DefaultBearerTokenResolver implements BearerTokenResolver {
|
||||
|
||||
private static final Pattern authorizationPattern = Pattern.compile(
|
||||
"^Bearer (?<token>[a-zA-Z0-9-._~+/]+)=*$",
|
||||
"^Bearer (?<token>[a-zA-Z0-9-._~+/]+=*)$",
|
||||
Pattern.CASE_INSENSITIVE);
|
||||
|
||||
private boolean allowFormEncodedBodyParameter = false;
|
||||
|
@ -110,7 +110,7 @@ public final class DefaultBearerTokenResolver implements BearerTokenResolver {
|
|||
throw new OAuth2AuthenticationException(error);
|
||||
}
|
||||
|
||||
return authorization.substring(7);
|
||||
return matcher.group("token");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -46,7 +46,7 @@ import static org.springframework.security.oauth2.server.resource.BearerTokenErr
|
|||
public class ServerBearerTokenAuthenticationConverter
|
||||
implements ServerAuthenticationConverter {
|
||||
private static final Pattern authorizationPattern = Pattern.compile(
|
||||
"^Bearer (?<token>[a-zA-Z0-9-._~+/]+)=*$",
|
||||
"^Bearer (?<token>[a-zA-Z0-9-._~+/]+=*)$",
|
||||
Pattern.CASE_INSENSITIVE);
|
||||
|
||||
private boolean allowUriQueryParameter = false;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2018 the original author or authors.
|
||||
* Copyright 2002-2020 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -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 = "ab5FG/ywfXPwiPc6ErRQM643QqY";
|
||||
private static final String TEST_TOKEN = "test-token";
|
||||
|
||||
private DefaultBearerTokenResolver resolver;
|
||||
|
||||
|
@ -51,17 +51,9 @@ public class DefaultBearerTokenResolverTests {
|
|||
assertThat(this.resolver.resolve(request)).isEqualTo(TEST_TOKEN);
|
||||
}
|
||||
|
||||
// gh-8502
|
||||
@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() {
|
||||
public void resolveWhenHeaderEndsWithPaddingIndicatorThenTokenIsResolved() {
|
||||
String token = TEST_TOKEN + "==";
|
||||
MockHttpServletRequest request = new MockHttpServletRequest();
|
||||
request.addHeader("Authorization", "Bearer " + token);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2018 the original author or authors.
|
||||
* Copyright 2002-2020 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -16,8 +16,11 @@
|
|||
|
||||
package org.springframework.security.oauth2.server.resource.web.server;
|
||||
|
||||
import java.util.Base64;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.mock.http.server.reactive.MockServerHttpRequest;
|
||||
|
@ -27,8 +30,6 @@ import org.springframework.security.oauth2.server.resource.BearerTokenAuthentica
|
|||
import org.springframework.security.oauth2.server.resource.BearerTokenError;
|
||||
import org.springframework.security.oauth2.server.resource.BearerTokenErrorCodes;
|
||||
|
||||
import java.util.Base64;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatCode;
|
||||
import static org.assertj.core.api.Assertions.catchThrowableOfType;
|
||||
|
@ -57,6 +58,17 @@ public class ServerBearerTokenAuthenticationConverterTests {
|
|||
assertThat(convertToToken(request).getToken()).isEqualTo(TEST_TOKEN);
|
||||
}
|
||||
|
||||
// gh-8502
|
||||
@Test
|
||||
public void resolveWhenHeaderEndsWithPaddingIndicatorThenTokenIsResolved() {
|
||||
String token = TEST_TOKEN + "==";
|
||||
MockServerHttpRequest.BaseBuilder<?> request = MockServerHttpRequest
|
||||
.get("/")
|
||||
.header(HttpHeaders.AUTHORIZATION, "Bearer " + token);
|
||||
|
||||
assertThat(convertToToken(request).getToken()).isEqualTo(token);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void resolveWhenCustomDefinedHeaderIsValidAndPresentThenTokenIsResolved() {
|
||||
this.converter.setBearerTokenHeaderName(CUSTOM_HEADER);
|
||||
|
|
Loading…
Reference in New Issue