mirror of
https://github.com/spring-projects/spring-security.git
synced 2025-06-26 13:53:14 +00:00
ServerHttpBasicAuthenticationConverter Validates Scheme Name
Fixes: gh-5414
This commit is contained in:
parent
e3d4d66917
commit
0c26d1b98a
@ -41,7 +41,7 @@ public class ServerHttpBasicAuthenticationConverter implements Function<ServerWe
|
|||||||
ServerHttpRequest request = exchange.getRequest();
|
ServerHttpRequest request = exchange.getRequest();
|
||||||
|
|
||||||
String authorization = request.getHeaders().getFirst(HttpHeaders.AUTHORIZATION);
|
String authorization = request.getHeaders().getFirst(HttpHeaders.AUTHORIZATION);
|
||||||
if(authorization == null) {
|
if(authorization == null || !authorization.toLowerCase().startsWith("basic ")) {
|
||||||
return Mono.empty();
|
return Mono.empty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -79,6 +79,22 @@ public class ServerHttpBasicAuthenticationConverterTests {
|
|||||||
assertThat(authentication.getCredentials()).isEqualTo("password");
|
assertThat(authentication.getCredentials()).isEqualTo("password");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void applyWhenLowercaseSchemeThenAuthentication() {
|
||||||
|
Mono<Authentication> result = apply(this.request.header(HttpHeaders.AUTHORIZATION, "basic dXNlcjpwYXNzd29yZA=="));
|
||||||
|
|
||||||
|
UsernamePasswordAuthenticationToken authentication = result.cast(UsernamePasswordAuthenticationToken.class).block();
|
||||||
|
assertThat(authentication.getPrincipal()).isEqualTo("user");
|
||||||
|
assertThat(authentication.getCredentials()).isEqualTo("password");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void applyWhenWrongSchemeThenAuthentication() {
|
||||||
|
Mono<Authentication> result = apply(this.request.header(HttpHeaders.AUTHORIZATION, "token dXNlcjpwYXNzd29yZA=="));
|
||||||
|
|
||||||
|
assertThat(result.block()).isNull();
|
||||||
|
}
|
||||||
|
|
||||||
private Mono<Authentication> apply(MockServerHttpRequest.BaseBuilder<?> request) {
|
private Mono<Authentication> apply(MockServerHttpRequest.BaseBuilder<?> request) {
|
||||||
return this.converter.apply(MockServerWebExchange.from(this.request.build()));
|
return this.converter.apply(MockServerWebExchange.from(this.request.build()));
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user