Skip to content

Commit fa0576b

Browse files
authored
Make token validation filter order configurable with default value Ordered.HIGHEST_PRECEDENCE as before. This makes it possible to do header customization in clients before validation kicks in. (#315)
1 parent 6df8f33 commit fa0576b

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

token-validation-core/src/main/java/no/nav/security/token/support/core/JwtTokenConstants.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ public class JwtTokenConstants {
66
public static final String COOKIE_NAME = "%s-idtoken";
77
public static final String AUTHORIZATION_HEADER = "Authorization";
88
public static final String EXPIRY_THRESHOLD_ENV_PROPERTY = "no.nav.security.jwt.expirythreshold";
9+
public static final String TOKEN_VALIDATION_FILTER_ORDER_PROPERTY = "no.nav.security.jwt.tokenvalidationfilter.order";
910
public static final String TOKEN_EXPIRES_SOON_HEADER = "x-token-expires-soon";
1011

1112
public static String getDefaultCookieName(String issuer) {

token-validation-spring/src/main/java/no/nav/security/token/support/spring/EnableJwtTokenValidationConfiguration.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
@EnableConfigurationProperties(MultiIssuerProperties.class)
4242
public class EnableJwtTokenValidationConfiguration implements WebMvcConfigurer, EnvironmentAware, ImportAware {
4343

44-
private final Logger logger = LoggerFactory.getLogger(EnableJwtTokenValidationConfiguration.class);
44+
private final Logger logger = LoggerFactory.getLogger(EnableJwtTokenValidationConfiguration.class);
4545

4646
private Environment env;
4747

@@ -110,15 +110,18 @@ public JwtTokenHandlerInterceptor getControllerInterceptor() {
110110

111111
@Bean
112112
@Qualifier("oidcTokenValidationFilterRegistrationBean")
113-
public FilterRegistrationBean<JwtTokenValidationFilter> oidcTokenValidationFilterRegistrationBean(JwtTokenValidationFilter validationFilter) {
113+
public FilterRegistrationBean<JwtTokenValidationFilter> oidcTokenValidationFilterRegistrationBean(JwtTokenValidationFilter validationFilter,
114+
@Value("${" + JwtTokenConstants.TOKEN_VALIDATION_FILTER_ORDER_PROPERTY
115+
+ ":" + Ordered.HIGHEST_PRECEDENCE + "}")
116+
Integer tokenValidationFilterOrder) {
114117
logger.info("Registering validation filter");
115118
final FilterRegistrationBean<JwtTokenValidationFilter> filterRegistration = new FilterRegistrationBean<>();
116119
filterRegistration.setFilter(validationFilter);
117120
filterRegistration.setMatchAfter(false);
118121
filterRegistration
119122
.setDispatcherTypes(EnumSet.of(DispatcherType.REQUEST, DispatcherType.FORWARD, DispatcherType.ASYNC));
120123
filterRegistration.setAsyncSupported(true);
121-
filterRegistration.setOrder(Ordered.HIGHEST_PRECEDENCE);
124+
filterRegistration.setOrder(tokenValidationFilterOrder);
122125
return filterRegistration;
123126
}
124127

0 commit comments

Comments
 (0)