bonampak commented on code in PR #1059: URL: https://github.com/apache/knox/pull/1059#discussion_r2216026145
########## gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/DiscoveryApiClient.java: ########## @@ -126,55 +124,53 @@ private void configure(GatewayConfig gatewayConfig, AliasService aliasService, K setUsername(username); setPassword(password); - if (isKerberos) { + if (isKerberos()) { // If there is a Kerberos subject, then add the SPNEGO auth interceptor Subject subject = AuthUtils.getKerberosSubject(); if (subject != null) { - SpnegoAuthInterceptor spnegoInterceptor = new SpnegoAuthInterceptor(subject); - getHttpClient().interceptors().add(spnegoInterceptor); + addInterceptor(new SpnegoAuthInterceptor(subject)); } + addInterceptor(new DoAsQueryParameterInterceptor(username)); } configureTimeouts(gatewayConfig); configureSsl(gatewayConfig, trustStore); } - private void configureTimeouts(GatewayConfig config) { - OkHttpClient client = getHttpClient(); - client.setConnectTimeout(config.getServiceDiscoveryConnectTimeoutMillis(), TimeUnit.MILLISECONDS); - client.setReadTimeout(config.getServiceDiscoveryReadTimeoutMillis(), TimeUnit.MILLISECONDS); - client.setWriteTimeout(config.getServiceDiscoveryWriteTimeoutMillis(), TimeUnit.MILLISECONDS); - log.discoveryClientTimeout(client.getConnectTimeout(), client.getReadTimeout(), client.getWriteTimeout()); + private String getApiPath(GatewayConfig gatewayConfig) { + if (gatewayConfig == null) { + return API_PATH_PREFIX + GatewayConfig.DEFAULT_CLOUDERA_MANAGER_SERVICE_DISCOVERY_API_VERSION; + } else { + return API_PATH_PREFIX + gatewayConfig.getClouderaManagerServiceDiscoveryApiVersion(); + } } - @Override - public String buildUrl(String path, List<Pair> queryParams) { - // If kerberos is enabled, then for every request, we're going to include a doAs query param - if (isKerberos()) { - String user = getUsername(); - if (user != null) { - queryParams.add(new Pair("doAs", user)); - } - } - return super.buildUrl(path, queryParams); + private String getApiAddress(ServiceDiscoveryConfig serviceDiscoveryConfig, GatewayConfig gatewayConfig) { + String address = serviceDiscoveryConfig.getAddress(); + String apiPath = getApiPath(gatewayConfig); + return (address.endsWith("/") ? address + apiPath : address + "/" + apiPath); } - /** - * @return The username set from the discovery configuration when this instance was initialized. - */ - private String getUsername() { - String username = null; - Authentication basicAuth = getAuthentication("basic"); - if (basicAuth instanceof HttpBasicAuth) { - username = ((HttpBasicAuth) basicAuth).getUsername(); - } - return username; + private void addInterceptor(Interceptor interceptor) { + OkHttpClient newClient = getHttpClient().newBuilder().addInterceptor(interceptor).build(); + setHttpClient(newClient); + } Review Comment: done -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: dev-unsubscr...@knox.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org