Fixed NPE in HttpsRedirectWebFilter
A more descriptive IllegalStateException is now thrown instead in the case that no such port mapping exists. Fixes: gh-6639
This commit is contained in:
parent
8dd2864dea
commit
281ccff907
|
@ -17,6 +17,7 @@
|
||||||
package org.springframework.security.web.server.transport;
|
package org.springframework.security.web.server.transport;
|
||||||
|
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
import reactor.core.publisher.Mono;
|
import reactor.core.publisher.Mono;
|
||||||
|
|
||||||
|
@ -101,8 +102,9 @@ public final class HttpsRedirectWebFilter implements WebFilter {
|
||||||
UriComponentsBuilder.fromUri(exchange.getRequest().getURI());
|
UriComponentsBuilder.fromUri(exchange.getRequest().getURI());
|
||||||
|
|
||||||
if (port > 0) {
|
if (port > 0) {
|
||||||
port = this.portMapper.lookupHttpsPort(port);
|
builder.port(Optional.ofNullable(this.portMapper.lookupHttpsPort(port))
|
||||||
builder.port(port);
|
.orElseThrow(() -> new IllegalStateException(
|
||||||
|
"HTTP Port '" + port + "' does not have a corresponding HTTPS Port")));
|
||||||
}
|
}
|
||||||
|
|
||||||
return builder.scheme("https").build().toUri();
|
return builder.scheme("https").build().toUri();
|
||||||
|
|
|
@ -112,6 +112,12 @@ public class HttpsRedirectWebFilterTests {
|
||||||
verify(portMapper).lookupHttpsPort(314);
|
verify(portMapper).lookupHttpsPort(314);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void filterWhenRequestIsInsecureAndNoPortMappingThenThrowsIllegalState() {
|
||||||
|
ServerWebExchange exchange = get("http://localhost:1234");
|
||||||
|
assertThatCode(() -> this.filter.filter(exchange, this.chain).block())
|
||||||
|
.isInstanceOf(IllegalStateException.class);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void filterWhenInsecureRequestHasAPathThenRedirects() {
|
public void filterWhenInsecureRequestHasAPathThenRedirects() {
|
||||||
|
|
Loading…
Reference in New Issue