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 { 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); } }