Source:
<code>public String build() throws InternalInfrastructureException { List<VerifierProxyConfig> proxyConfigs = new ArrayList<>(); Config config = new Config() .withJWTProxy( new JWTProxy() .withSignerProxy(new SignerProxyConfig().withEnabled(false)) .withVerifiedProxyConfigs(proxyConfigs)); for (VerifierProxy verifierProxy : verifierProxies) { VerifierConfig verifierConfig = new VerifierConfig() .withAudience(workspaceId) .withUpstream(verifierProxy.upstream) .withMaxSkew("1m") .withMaxTtl(ttl) .withKeyServer( new RegistrableComponentConfig() .withType("preshared") .withOptions( ImmutableMap.of( "issuer", issuer, "key_id", workspaceId, "public_key_path", JWT_PROXY_CONFIG_FOLDER + '/' + JWT_PROXY_PUBLIC_KEY_FILE))) .withCookiesEnabled(verifierProxy.cookiesAuthEnabled) .withCookiePath(ensureStartsWithSlash(verifierProxy.cookiePath)) .withClaimsVerifier( Collections.singleton( new RegistrableComponentConfig() .withType("static") .withOptions(ImmutableMap.of("iss", issuer)))) .withNonceStorage(new RegistrableComponentConfig().withType("void")); if (!verifierProxy.excludes.isEmpty()) { verifierConfig.setExcludes(verifierProxy.excludes); } if (verifierProxy.cookiesAuthEnabled && authPageUrl != null) { <START> verifierConfig.setAuthUrl(authPageUrl.toString()); <END> } if (verifierProxy.authErrorRedirectUriPrefix != null) { verifierConfig.setAuthErrorRedirectUriPrefix(verifierProxy.authErrorRedirectUriPrefix); } VerifierProxyConfig proxyConfig = new VerifierProxyConfig() .withListenAddr(":" + verifierProxy.listenPort) .withVerifierConfig(verifierConfig); proxyConfigs.add(proxyConfig); } try { return YAML_PARSER.writeValueAsString(config); } catch (JsonProcessingException e) { throw new InternalInfrastructureException( "Error during creation of JWTProxy config YAML: " + e.getMessage(), e); } }</code><technical_language>Do need play authErrorRedirectUriPrefix? simpler if Che Server prefix provide jwt-proxy ready authPageUrl prefix included</technical_language>

Target:
public String build() throws InternalInfrastructureException { List<VerifierProxyConfig> proxyConfigs = new ArrayList<>(); Config config = new Config() .withJWTProxy( new JWTProxy() .withSignerProxy(new SignerProxyConfig().withEnabled(false)) .withVerifiedProxyConfigs(proxyConfigs)); for (VerifierProxy verifierProxy : verifierProxies) { VerifierConfig verifierConfig = new VerifierConfig() .withAudience(workspaceId) .withUpstream(verifierProxy.upstream) .withMaxSkew("1m") .withMaxTtl(ttl) .withKeyServer( new RegistrableComponentConfig() .withType("preshared") .withOptions( ImmutableMap.of( "issuer", issuer, "key_id", workspaceId, "public_key_path", JWT_PROXY_CONFIG_FOLDER + '/' + JWT_PROXY_PUBLIC_KEY_FILE))) .withCookiesEnabled(verifierProxy.cookiesAuthEnabled) .withCookiePath(ensureStartsWithSlash(verifierProxy.cookiePath)) .withClaimsVerifier( Collections.singleton( new RegistrableComponentConfig() .withType("static") .withOptions(ImmutableMap.of("iss", issuer)))) .withNonceStorage(new RegistrableComponentConfig().withType("void")); if (!verifierProxy.excludes.isEmpty()) { verifierConfig.setExcludes(verifierProxy.excludes); } if (verifierProxy.cookiesAuthEnabled && authPageUrl != null) { verifierConfig.setAuthUrl(authPageUrl.toString()); } if (verifierProxy.publicBasePath != null) { verifierConfig.setPublicBasePath(verifierProxy.publicBasePath); } VerifierProxyConfig proxyConfig = new VerifierProxyConfig() .withListenAddr(":" + verifierProxy.listenPort) .withVerifierConfig(verifierConfig); proxyConfigs.add(proxyConfig); } try { return YAML_PARSER.writeValueAsString(config); } catch (JsonProcessingException e) { throw new InternalInfrastructureException( "Error during creation of JWTProxy config YAML: " + e.getMessage(), e); } }