Favor URL.toExternalForm
Converts URLs to Strings before comparing them. Uses toString(), which delegates to toExternalForm(). Fixes: gh-6073
This commit is contained in:
parent
a32d19ec7d
commit
c70b65c5df
|
@ -37,7 +37,7 @@ public final class JwtIssuerValidator implements OAuth2TokenValidator<Jwt> {
|
|||
"This iss claim is not equal to the configured issuer",
|
||||
"https://tools.ietf.org/html/rfc6750#section-3.1");
|
||||
|
||||
private final URL issuer;
|
||||
private final String issuer;
|
||||
|
||||
/**
|
||||
* Constructs a {@link JwtIssuerValidator} using the provided parameters
|
||||
|
@ -48,7 +48,7 @@ public final class JwtIssuerValidator implements OAuth2TokenValidator<Jwt> {
|
|||
Assert.notNull(issuer, "issuer cannot be null");
|
||||
|
||||
try {
|
||||
this.issuer = new URL(issuer);
|
||||
this.issuer = new URL(issuer).toString();
|
||||
} catch (MalformedURLException ex) {
|
||||
throw new IllegalArgumentException(
|
||||
"Invalid Issuer URL " + issuer + " : " + ex.getMessage(),
|
||||
|
@ -63,7 +63,8 @@ public final class JwtIssuerValidator implements OAuth2TokenValidator<Jwt> {
|
|||
public OAuth2TokenValidatorResult validate(Jwt token) {
|
||||
Assert.notNull(token, "token cannot be null");
|
||||
|
||||
if (this.issuer.equals(token.getIssuer())) {
|
||||
String tokenIssuer = token.getClaimAsString(JwtClaimNames.ISS);
|
||||
if (this.issuer.equals(tokenIssuer)) {
|
||||
return OAuth2TokenValidatorResult.success();
|
||||
} else {
|
||||
return OAuth2TokenValidatorResult.failure(INVALID_ISSUER);
|
||||
|
|
|
@ -23,9 +23,6 @@ import org.junit.Test;
|
|||
|
||||
import org.springframework.security.oauth2.core.OAuth2TokenValidatorResult;
|
||||
import org.springframework.security.oauth2.jose.jws.JwsAlgorithms;
|
||||
import org.springframework.security.oauth2.jwt.Jwt;
|
||||
import org.springframework.security.oauth2.jwt.JwtClaimNames;
|
||||
import org.springframework.security.oauth2.jwt.JwtIssuerValidator;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatCode;
|
||||
|
@ -72,6 +69,19 @@ public class JwtIssuerValidatorTests {
|
|||
assertThat(result.getErrors()).isNotEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void validateWhenJwtHasNoIssuerThenReturnsError() {
|
||||
Jwt jwt = new Jwt(
|
||||
MOCK_TOKEN,
|
||||
MOCK_ISSUED_AT,
|
||||
MOCK_EXPIRES_AT,
|
||||
MOCK_HEADERS,
|
||||
Collections.singletonMap(JwtClaimNames.AUD, "https://aud"));
|
||||
|
||||
OAuth2TokenValidatorResult result = this.validator.validate(jwt);
|
||||
assertThat(result.getErrors()).isNotEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void validateWhenJwtIsNullThenThrowsIllegalArgumentException() {
|
||||
assertThatCode(() -> this.validator.validate(null))
|
||||
|
|
Loading…
Reference in New Issue