Skip to content

Commit 7ab12ff

Browse files
committed
Fix DollyFrontendApplicationStarter
1 parent 0a49378 commit 7ab12ff

File tree

2 files changed

+65
-2
lines changed

2 files changed

+65
-2
lines changed

apps/dolly-frontend/src/main/java/no/nav/dolly/web/DollyFrontendApplicationStarter.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,16 @@
55
import no.nav.dolly.web.config.Consumers;
66
import no.nav.dolly.web.service.AccessService;
77
import no.nav.testnav.libs.reactivecore.config.CoreConfig;
8+
import no.nav.testnav.libs.reactivecore.config.NaisEnvironmentApplicationContextInitializer;
89
import no.nav.testnav.libs.reactivefrontend.config.FrontendConfig;
910
import no.nav.testnav.libs.reactivefrontend.filter.AddAuthenticationHeaderToRequestGatewayFilterFactory;
1011
import no.nav.testnav.libs.reactivefrontend.filter.AddUserJwtHeaderToRequestGatewayFilterFactory;
1112
import no.nav.testnav.libs.reactivesecurity.config.SecureOAuth2ServerToServerConfiguration;
1213
import no.nav.testnav.libs.reactivesessionsecurity.exchange.user.UserJwtExchange;
1314
import no.nav.testnav.libs.securitycore.config.UserSessionConstant;
1415
import no.nav.testnav.libs.securitycore.domain.ServerProperties;
15-
import org.springframework.boot.SpringApplication;
1616
import org.springframework.boot.autoconfigure.SpringBootApplication;
17+
import org.springframework.boot.builder.SpringApplicationBuilder;
1718
import org.springframework.cloud.gateway.filter.GatewayFilter;
1819
import org.springframework.cloud.gateway.route.Route;
1920
import org.springframework.cloud.gateway.route.RouteLocator;
@@ -101,7 +102,9 @@ public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
101102
}
102103

103104
public static void main(String[] args) {
104-
SpringApplication.run(DollyFrontendApplicationStarter.class, args);
105+
new SpringApplicationBuilder(DollyFrontendApplicationStarter.class)
106+
.initializers(new NaisEnvironmentApplicationContextInitializer())
107+
.run(args);
105108
}
106109

107110
private GatewayFilter addAuthenticationHeaderFilterFrom(ServerProperties serverProperties) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package no.nav.testnav.libs.reactivecore.config;
2+
3+
import lombok.extern.slf4j.Slf4j;
4+
import org.springframework.context.ApplicationContextInitializer;
5+
import org.springframework.context.ConfigurableApplicationContext;
6+
import org.springframework.lang.NonNull;
7+
8+
import java.util.Map;
9+
import java.util.stream.Stream;
10+
11+
@Slf4j
12+
public class NaisEnvironmentApplicationContextInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
13+
14+
private static final String DUMMY = "dummy";
15+
16+
@Override
17+
public void initialize(@NonNull ConfigurableApplicationContext context) {
18+
19+
var environment = context.getEnvironment();
20+
Stream
21+
.of(environment.getActiveProfiles())
22+
.forEach(profile -> {
23+
switch (profile) {
24+
case "local" -> configureForLocalProfile(environment.getSystemProperties());
25+
case "test" -> configureForTestProfile(environment.getSystemProperties());
26+
default -> { /* Do nothing. */ }
27+
}
28+
});
29+
30+
}
31+
32+
private static void configureForLocalProfile(Map<String, Object> properties) {
33+
34+
log.info("Configuring environment for local profile using Secret Manager");
35+
36+
// Emulating NAIS provided environment variables.
37+
properties.putIfAbsent("AZURE_APP_CLIENT_ID", "${sm\\://azure-app-client-id}");
38+
properties.putIfAbsent("AZURE_APP_CLIENT_SECRET", "${sm\\://azure-app-client-secret}");
39+
properties.putIfAbsent("AZURE_OPENID_CONFIG_ISSUER", "${sm\\://azure-openid-config-issuer}");
40+
properties.putIfAbsent("AZURE_OPENID_CONFIG_TOKEN_ENDPOINT", "${sm\\://azure-openid-config-token-endpoint}");
41+
properties.putIfAbsent("TOKEN_X_ISSUER", "${sm\\://token-x-issuer}");
42+
properties.putIfAbsent("TOKEN_X_JWKS_URI", "${sm\\://token-x-jwks-uri}");
43+
44+
}
45+
46+
private static void configureForTestProfile(Map<String, Object> properties) {
47+
48+
log.info("Configuring environment for test profile using dummy values");
49+
50+
// Disabling Secret Manager (not available when running builds on GitHub).
51+
properties.putIfAbsent("spring.cloud.gcp.secretmanager.enabled", "false");
52+
53+
// Setting dummy placeholders.
54+
properties.putIfAbsent("AZURE_OPENID_CONFIG_ISSUER", DUMMY);
55+
properties.putIfAbsent("AZURE_OPENID_CONFIG_TOKEN_ENDPOINT", DUMMY);
56+
properties.putIfAbsent("TOKEN_X_ISSUER", DUMMY);
57+
58+
}
59+
60+
}

0 commit comments

Comments
 (0)