[
https://issues.apache.org/jira/browse/KNOX-3107?focusedWorklogId=960850&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-960850
]
ASF GitHub Bot logged work on KNOX-3107:
----------------------------------------
Author: ASF GitHub Bot
Created on: 07/Mar/25 19:54
Start Date: 07/Mar/25 19:54
Worklog Time Spent: 10m
Work Description: pzampino commented on code in PR #1002:
URL: https://github.com/apache/knox/pull/1002#discussion_r1985603662
##########
gateway-provider-security-authc-remote/src/main/java/org/apache/knox/gateway/filter/RemoteAuthFilter.java:
##########
@@ -132,12 +132,69 @@ public void init(FilterConfig filterConfig) throws
ServletException {
groupHeaders = Arrays.asList(groupHeaderParam.split("\\s*,\\s*"));
}
- truststorePath = filterConfig.getInitParameter(CONFIG_TRUSTSTORE_PATH);
- truststorePassword =
filterConfig.getInitParameter(CONFIG_TRUSTSTORE_PASSWORD);
- truststoreType = filterConfig.getInitParameter(CONFIG_TRUSTSTORE_TYPE);
+ buildTrustStore(filterConfig);
+ }
+
+ private void buildTrustStore(FilterConfig filterConfig) throws
ServletException {
+ String truststorePath =
filterConfig.getInitParameter(CONFIG_TRUSTSTORE_PATH);
+ String truststorePassword =
filterConfig.getInitParameter(CONFIG_TRUSTSTORE_PASSWORD);
+ String truststoreType =
filterConfig.getInitParameter(CONFIG_TRUSTSTORE_TYPE);
if (truststoreType == null || truststoreType.isEmpty()) {
truststoreType = DEFAULT_TRUSTSTORE_TYPE;
}
+
+ ServletContext context = filterConfig.getServletContext();
+ if (context != null) {
+ String topologyName = (String)
context.getAttribute(GatewayServices.GATEWAY_CLUSTER_ATTRIBUTE);
+ GatewayServices services = (GatewayServices)
context.getAttribute(GatewayServices.GATEWAY_SERVICES_ATTRIBUTE);
+ if (services != null) {
+ try {
+ final AliasService aliasService =
services.getService(ServiceType.ALIAS_SERVICE);
+ if (truststorePath != null && !truststorePath.isEmpty()) {
+ if (truststorePassword == null || truststorePassword.isEmpty()) {
+ // let's check the for an alias given the intent to specify a
truststore path
Review Comment:
nit: comment typo
##########
gateway-provider-security-authc-remote/src/main/java/org/apache/knox/gateway/filter/RemoteAuthFilter.java:
##########
@@ -132,12 +132,69 @@ public void init(FilterConfig filterConfig) throws
ServletException {
groupHeaders = Arrays.asList(groupHeaderParam.split("\\s*,\\s*"));
}
- truststorePath = filterConfig.getInitParameter(CONFIG_TRUSTSTORE_PATH);
- truststorePassword =
filterConfig.getInitParameter(CONFIG_TRUSTSTORE_PASSWORD);
- truststoreType = filterConfig.getInitParameter(CONFIG_TRUSTSTORE_TYPE);
+ buildTrustStore(filterConfig);
+ }
+
+ private void buildTrustStore(FilterConfig filterConfig) throws
ServletException {
+ String truststorePath =
filterConfig.getInitParameter(CONFIG_TRUSTSTORE_PATH);
+ String truststorePassword =
filterConfig.getInitParameter(CONFIG_TRUSTSTORE_PASSWORD);
+ String truststoreType =
filterConfig.getInitParameter(CONFIG_TRUSTSTORE_TYPE);
if (truststoreType == null || truststoreType.isEmpty()) {
truststoreType = DEFAULT_TRUSTSTORE_TYPE;
}
+
+ ServletContext context = filterConfig.getServletContext();
+ if (context != null) {
+ String topologyName = (String)
context.getAttribute(GatewayServices.GATEWAY_CLUSTER_ATTRIBUTE);
+ GatewayServices services = (GatewayServices)
context.getAttribute(GatewayServices.GATEWAY_SERVICES_ATTRIBUTE);
+ if (services != null) {
+ try {
+ final AliasService aliasService =
services.getService(ServiceType.ALIAS_SERVICE);
+ if (truststorePath != null && !truststorePath.isEmpty()) {
+ if (truststorePassword == null || truststorePassword.isEmpty()) {
+ // let's check the for an alias given the intent to specify a
truststore path
+ char[] passChars =
aliasService.getPasswordFromAliasForCluster(topologyName,
+ CONFIG_TRUSTSTORE_PASSWORD, false);
+ if (passChars != null) {
+ truststorePassword = new String(passChars);
+ }
+ if (truststorePassword == null || truststorePassword.isEmpty()) {
+ truststorePassword = new
String(aliasService.getPasswordFromAliasForGateway(CONFIG_TRUSTSTORE_PASSWORD));
+ }
+ }
+ }
+ KeystoreService keystoreService =
services.getService(ServiceType.KEYSTORE_SERVICE);
+ trustStore = getTrustStore(truststorePath, truststoreType,
truststorePassword, keystoreService);
+ } catch (AliasServiceException | IOException e) {
+ throw new ServletException("Error while initializing
RemoteAuthProvider", e);
+ }
+ }
+ } else if (truststorePath != null && !truststorePath.isEmpty()) {
Review Comment:
Do we get here if the ServletContext cannot be resolved? Seems like perhaps,
rather than an else clause, there should be a check to see if we were able to
initialize the trust store.
Issue Time Tracking
-------------------
Worklog Id: (was: 960850)
Time Spent: 20m (was: 10m)
> Alias Support for the RemoteAuthProvider truststore password
> ------------------------------------------------------------
>
> Key: KNOX-3107
> URL: https://issues.apache.org/jira/browse/KNOX-3107
> Project: Apache Knox
> Issue Type: Improvement
> Components: Server
> Reporter: Larry McCay
> Assignee: Larry McCay
> Priority: Major
> Fix For: 2.2.0
>
> Time Spent: 20m
> Remaining Estimate: 0h
>
> Need to add Alias support for protecting the topology level config for the
> RemoteAuthProvider truststore. While it is likely that it will usually
> leverage the gateway level truststore and not need this for anything but
> testing and dev environments, some usecases/deployments may want to configure
> this at the topology level.
> Let's not require the password to be in the topology file.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)