30 lines
966 B
Java
30 lines
966 B
Java
package com.example.keycloakpattern;
|
|
|
|
import org.springframework.security.oauth2.core.OAuth2Error;
|
|
import org.springframework.security.oauth2.core.OAuth2TokenValidator;
|
|
import org.springframework.security.oauth2.core.OAuth2TokenValidatorResult;
|
|
import org.springframework.security.oauth2.jwt.Jwt;
|
|
|
|
final class AudienceValidator implements OAuth2TokenValidator<Jwt> {
|
|
|
|
private static final OAuth2Error MISSING_AUDIENCE = new OAuth2Error(
|
|
"invalid_token",
|
|
"The required resource audience is missing",
|
|
null
|
|
);
|
|
|
|
private final String expectedAudience;
|
|
|
|
AudienceValidator(String expectedAudience) {
|
|
this.expectedAudience = expectedAudience;
|
|
}
|
|
|
|
@Override
|
|
public OAuth2TokenValidatorResult validate(Jwt jwt) {
|
|
if (jwt.getAudience().contains(expectedAudience)) {
|
|
return OAuth2TokenValidatorResult.success();
|
|
}
|
|
return OAuth2TokenValidatorResult.failure(MISSING_AUDIENCE);
|
|
}
|
|
}
|