KNOX-1442 - Enable forbiddenapis for static build checking Signed-off-by: Kevin Risden <[email protected]>
Project: http://git-wip-us.apache.org/repos/asf/knox/repo Commit: http://git-wip-us.apache.org/repos/asf/knox/commit/159bb800 Tree: http://git-wip-us.apache.org/repos/asf/knox/tree/159bb800 Diff: http://git-wip-us.apache.org/repos/asf/knox/diff/159bb800 Branch: refs/heads/master Commit: 159bb800c4572818026d60c830bffbf0f9c0e71d Parents: 5bf7bc5 Author: Kevin Risden <[email protected]> Authored: Fri Sep 21 15:50:55 2018 -0400 Committer: Kevin Risden <[email protected]> Committed: Mon Sep 24 21:36:21 2018 -0400 ---------------------------------------------------------------------- .../discovery/ambari/AmbariClientCommon.java | 3 +- .../ambari/AmbariServiceDiscovery.java | 26 ++-- .../ambari/SparkCommonServiceURLCreator.java | 3 +- .../ambari/AmbariServiceDiscoveryTest.java | 10 +- .../gateway/i18n/messages/MessagesInvoker.java | 4 +- .../loggers/sout/SoutMessageLogger.java | 4 +- .../i18n/resources/ResourcesInvoker.java | 4 +- .../impl/HS2ZookeeperURLManagerTest.java | 10 +- .../provider/impl/HaDescriptorManagerTest.java | 11 +- ...ctIdentityAsserterDeploymentContributor.java | 3 +- .../CommonIdentityAssertionFilterTest.java | 30 ++-- ...adoopGroupProviderDeploymentContributor.java | 13 +- .../SwitchCaseIdentityAssertionFilter.java | 17 +-- .../SecureQueryDecodeProcessorTest.java | 9 +- .../SecureQueryEncodeProcessorTest.java | 17 ++- .../impl/CookieScopeResponseWrapper.java | 3 +- .../rewrite/impl/FrontendFunctionProcessor.java | 3 +- .../impl/UrlRewriteRuleDescriptorImpl.java | 3 +- .../rewrite/impl/html/HtmlFilterReaderBase.java | 3 +- .../spi/UrlRewriteFlowDescriptorBase.java | 3 +- .../api/UrlRewriteServletFilterTest.java | 6 +- .../rewrite/impl/UrlRewriteResponseTest.java | 4 +- .../AnonymousAuthDeploymentContributor.java | 13 +- .../impl/AclsAuthzDeploymentContributor.java | 3 +- .../gateway/filter/AclsAuthorizationFilter.java | 22 +-- .../deploy/HadoopAuthDeploymentContributor.java | 13 +- .../jwt/deploy/JWTFederationContributor.java | 3 +- .../deploy/SSOCookieFederationContributor.java | 3 +- .../jwt/filter/AccessTokenFederationFilter.java | 32 ++--- .../federation/AbstractJWTFilterTest.java | 78 +++++----- .../deploy/HeaderPreAuthContributor.java | 13 +- .../gateway/preauth/filter/PreAuthService.java | 11 +- .../knox/gateway/shirorealm/KnoxLdapRealm.java | 64 ++++----- .../webappsec/deploy/WebAppSecContributor.java | 13 +- .../filter/XForwardedHeaderRequestWrapper.java | 17 +-- .../org/apache/knox/gateway/GatewayServer.java | 19 +-- .../gateway/config/impl/GatewayConfigImpl.java | 5 +- .../knox/gateway/deploy/DeploymentFactory.java | 43 +++--- .../impl/ApplicationDeploymentContributor.java | 3 +- .../ServiceDefinitionDeploymentContributor.java | 3 +- .../gateway/dispatch/UrlConnectionDispatch.java | 10 +- .../instr/InstrHttpClientBuilderProvider.java | 10 +- .../security/impl/DefaultKeystoreService.java | 3 +- .../security/impl/RemoteAliasService.java | 15 +- .../simple/SimpleDescriptorHandler.java | 3 +- .../apache/knox/gateway/trace/TraceInput.java | 3 +- .../apache/knox/gateway/trace/TraceOutput.java | 3 +- .../apache/knox/gateway/trace/TraceRequest.java | 3 +- .../knox/gateway/trace/TraceResponse.java | 3 +- .../org/apache/knox/gateway/util/KnoxCLI.java | 3 +- .../websockets/GatewayWebsocketHandler.java | 24 ++-- .../gateway/GatewayPortMappingConfigTest.java | 7 +- .../knox/gateway/jetty/SslSocketTest.java | 27 ++-- .../security/impl/RemoteAliasMonitorTest.java | 18 +-- ...emoteConfigurationRegistryClientService.java | 5 +- .../PropertiesFileServiceDiscoveryTest.java | 7 +- .../discovery/ServiceDiscoveryFactoryTest.java | 8 +- .../ZooKeeperConfigurationMonitorTest.java | 17 +-- .../simple/ProviderConfigurationParserTest.java | 6 +- .../simple/SimpleDescriptorFactoryTest.java | 22 ++- .../simple/SimpleDescriptorHandlerTest.java | 42 +++--- .../apache/knox/gateway/util/KnoxCLITest.java | 142 +++++++++---------- .../knox/gateway/websockets/BadBackendTest.java | 20 +-- .../knox/gateway/websockets/BadUrlTest.java | 37 +++-- .../websockets/ConnectionDroppedTest.java | 20 +-- .../gateway/websockets/MessageFailureTest.java | 22 +-- .../websockets/ProxyInboundClientTest.java | 10 +- .../gateway/websockets/WebsocketEchoTest.java | 45 +++--- .../WebsocketMultipleConnectionTest.java | 51 ++++--- .../gateway/service/health/MetricsResource.java | 6 +- .../gateway/service/health/PingResource.java | 3 +- .../knox/gateway/dispatch/NiFiDispatch.java | 18 +-- .../knox/gateway/dispatch/NiFiHaDispatch.java | 20 +-- .../knox/gateway/dispatch/NiFiRequestUtil.java | 19 ++- .../RemoteConfigurationRegistryJAASConfig.java | 3 +- ...eConfigurationRegistryClientServiceTest.java | 8 +- .../org/apache/knox/gateway/shell/KnoxSh.java | 6 +- .../knox/gateway/dispatch/DefaultDispatch.java | 3 +- .../gateway/dispatch/GatewayDispatchFilter.java | 9 +- .../knox/gateway/util/WhitelistUtils.java | 13 +- .../dispatch/HadoopAuthCookieStoreTest.java | 16 ++- .../knox/gateway/util/WhitelistUtilsTest.java | 3 +- .../apache/knox/gateway/SecureClusterTest.java | 25 ++-- .../java/org/apache/knox/test/TestUtils.java | 5 +- .../knox/gateway/GatewayBasicFuncTest.java | 88 ++++++------ .../knox/gateway/GatewayMultiFuncTest.java | 46 +++--- .../gateway/KnoxCliLdapFuncTestNegative.java | 32 ++--- .../gateway/KnoxCliLdapFuncTestPositive.java | 28 ++-- .../apache/knox/gateway/KnoxCliSysBindTest.java | 20 +-- .../monitor/RemoteConfigurationMonitorTest.java | 21 +-- .../org/apache/knox/gateway/util/MimeTypes.java | 7 +- .../knox/gateway/audit/AuditLayoutTest.java | 15 +- .../knox/gateway/audit/JdbmQueueTest.java | 5 +- .../config/ConfigurationInjectorBuilder.java | 3 +- .../config/impl/BeanConfigurationAdapter.java | 2 +- .../impl/DefaultConfigurationInjector.java | 15 +- .../knox/gateway/config/AdapterSampleTest.java | 3 +- pom.xml | 29 ++++ 98 files changed, 861 insertions(+), 743 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/knox/blob/159bb800/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariClientCommon.java ---------------------------------------------------------------------- diff --git a/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariClientCommon.java b/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariClientCommon.java index 9d4915b..0c26158 100644 --- a/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariClientCommon.java +++ b/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariClientCommon.java @@ -23,6 +23,7 @@ import org.apache.knox.gateway.services.security.AliasService; import org.apache.knox.gateway.topology.discovery.ServiceDiscoveryConfig; import java.util.HashMap; +import java.util.Locale; import java.util.Map; import java.util.Map.Entry; @@ -71,7 +72,7 @@ class AmbariClientCommon { String discoveryPwdAlias) { Map<String, Map<String, AmbariCluster.ServiceConfiguration>> serviceConfigurations = new HashMap<>(); - String serviceConfigsURL = String.format("%s" + AMBARI_SERVICECONFIGS_URI, discoveryAddress, clusterName); + String serviceConfigsURL = String.format(Locale.ROOT,"%s" + AMBARI_SERVICECONFIGS_URI, discoveryAddress, clusterName); JSONObject serviceConfigsJSON = restClient.invoke(serviceConfigsURL, discoveryUser, discoveryPwdAlias); if (serviceConfigsJSON != null) { http://git-wip-us.apache.org/repos/asf/knox/blob/159bb800/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariServiceDiscovery.java ---------------------------------------------------------------------- diff --git a/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariServiceDiscovery.java b/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariServiceDiscovery.java index 04f3d58..82b9833 100644 --- a/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariServiceDiscovery.java +++ b/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariServiceDiscovery.java @@ -16,17 +16,6 @@ */ package org.apache.knox.gateway.topology.discovery.ambari; -import java.io.File; -import java.io.FileInputStream; -import java.io.InputStream; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Properties; - import net.minidev.json.JSONArray; import net.minidev.json.JSONObject; import org.apache.knox.gateway.config.GatewayConfig; @@ -39,6 +28,17 @@ import org.apache.knox.gateway.topology.discovery.GatewayService; import org.apache.knox.gateway.topology.discovery.ServiceDiscovery; import org.apache.knox.gateway.topology.discovery.ServiceDiscoveryConfig; +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStream; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Properties; class AmbariServiceDiscovery implements ServiceDiscovery { @@ -197,7 +197,7 @@ class AmbariServiceDiscovery implements ServiceDiscovery { String discoveryAddress = discoveryConfig.getAddress(); // Invoke Ambari REST API to discover the available clusters - String clustersDiscoveryURL = String.format("%s" + AMBARI_CLUSTERS_URI, discoveryAddress); + String clustersDiscoveryURL = String.format(Locale.ROOT, "%s" + AMBARI_CLUSTERS_URI, discoveryAddress); JSONObject json = restClient.invoke(clustersDiscoveryURL, discoveryConfig.getUser(), discoveryConfig.getPasswordAlias()); @@ -254,7 +254,7 @@ class AmbariServiceDiscovery implements ServiceDiscovery { init(gatewayConfig); Map<String, List<String>> componentHostNames = new HashMap<>(); - String hostRolesURL = String.format("%s" + AMBARI_HOSTROLES_URI, discoveryAddress, clusterName); + String hostRolesURL = String.format(Locale.ROOT, "%s" + AMBARI_HOSTROLES_URI, discoveryAddress, clusterName); JSONObject hostRolesJSON = restClient.invoke(hostRolesURL, discoveryUser, discoveryPwdAlias); if (hostRolesJSON != null) { // Process the host roles JSON http://git-wip-us.apache.org/repos/asf/knox/blob/159bb800/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/SparkCommonServiceURLCreator.java ---------------------------------------------------------------------- diff --git a/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/SparkCommonServiceURLCreator.java b/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/SparkCommonServiceURLCreator.java index 7f98872..4e245fe 100644 --- a/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/SparkCommonServiceURLCreator.java +++ b/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/SparkCommonServiceURLCreator.java @@ -18,6 +18,7 @@ package org.apache.knox.gateway.topology.discovery.ambari; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.Map; public abstract class SparkCommonServiceURLCreator implements ServiceURLCreator { @@ -63,7 +64,7 @@ public abstract class SparkCommonServiceURLCreator implements ServiceURLCreator String port = getPort(comp); List<String> hostNames = comp.getHostNames(); for (String host : hostNames) { - urls.add(String.format(URL_TEMPLATE, (isSSL(comp) ? SCHEME_HTTPS : SCHEME_HTTP), host, port)); + urls.add(String.format(Locale.ROOT, URL_TEMPLATE, (isSSL(comp) ? SCHEME_HTTPS : SCHEME_HTTP), host, port)); } } } http://git-wip-us.apache.org/repos/asf/knox/blob/159bb800/gateway-discovery-ambari/src/test/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariServiceDiscoveryTest.java ---------------------------------------------------------------------- diff --git a/gateway-discovery-ambari/src/test/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariServiceDiscoveryTest.java b/gateway-discovery-ambari/src/test/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariServiceDiscoveryTest.java index 40eecdd..a025162 100644 --- a/gateway-discovery-ambari/src/test/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariServiceDiscoveryTest.java +++ b/gateway-discovery-ambari/src/test/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariServiceDiscoveryTest.java @@ -31,15 +31,15 @@ import java.io.FileOutputStream; import java.lang.reflect.Field; import java.util.HashMap; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Properties; -import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; - /** * Test the Ambari ServiceDiscovery implementation. * @@ -324,7 +324,7 @@ public class AmbariServiceDiscoveryTest { sb.append(" "); } } - System.out.println(String.format("%18s: %s", name, sb.toString())); + System.out.println(String.format(Locale.ROOT, "%18s: %s", name, sb.toString())); } } @@ -371,11 +371,11 @@ public class AmbariServiceDiscoveryTest { (JSONObject) JSONValue.parse(CLUSTERS_JSON_TEMPLATE.replaceAll(CLUSTER_PLACEHOLDER, clusterName))); - cannedResponses.put(String.format(AmbariServiceDiscovery.AMBARI_HOSTROLES_URI, clusterName), + cannedResponses.put(String.format(Locale.ROOT, AmbariServiceDiscovery.AMBARI_HOSTROLES_URI, clusterName), (JSONObject) JSONValue.parse(HOSTROLES_JSON_TEMPLATE.replaceAll(CLUSTER_PLACEHOLDER, clusterName))); - cannedResponses.put(String.format(AmbariServiceDiscovery.AMBARI_SERVICECONFIGS_URI, clusterName), + cannedResponses.put(String.format(Locale.ROOT, AmbariServiceDiscovery.AMBARI_SERVICECONFIGS_URI, clusterName), (JSONObject) JSONValue.parse(SERVICECONFIGS_JSON_TEMPLATE.replaceAll(CLUSTER_PLACEHOLDER, clusterName))); } http://git-wip-us.apache.org/repos/asf/knox/blob/159bb800/gateway-i18n/src/main/java/org/apache/knox/gateway/i18n/messages/MessagesInvoker.java ---------------------------------------------------------------------- diff --git a/gateway-i18n/src/main/java/org/apache/knox/gateway/i18n/messages/MessagesInvoker.java b/gateway-i18n/src/main/java/org/apache/knox/gateway/i18n/messages/MessagesInvoker.java index 87e3845..a467dff 100644 --- a/gateway-i18n/src/main/java/org/apache/knox/gateway/i18n/messages/MessagesInvoker.java +++ b/gateway-i18n/src/main/java/org/apache/knox/gateway/i18n/messages/MessagesInvoker.java @@ -23,6 +23,7 @@ import java.lang.annotation.Annotation; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.text.MessageFormat; +import java.util.Locale; /** * @@ -67,7 +68,8 @@ public class MessagesInvoker extends ResourcesInvoker implements InvocationHandl if( anno != null ) { int num = anno.code(); if( Message.DEFAULT_CODE != num ) { - code = MessageFormat.format( codes, num ); + MessageFormat messageFormat = new MessageFormat(codes, Locale.ROOT ); + code = messageFormat.format(new Object[]{num}); } } return code; http://git-wip-us.apache.org/repos/asf/knox/blob/159bb800/gateway-i18n/src/main/java/org/apache/knox/gateway/i18n/messages/loggers/sout/SoutMessageLogger.java ---------------------------------------------------------------------- diff --git a/gateway-i18n/src/main/java/org/apache/knox/gateway/i18n/messages/loggers/sout/SoutMessageLogger.java b/gateway-i18n/src/main/java/org/apache/knox/gateway/i18n/messages/loggers/sout/SoutMessageLogger.java index b444faae..f8c721e 100644 --- a/gateway-i18n/src/main/java/org/apache/knox/gateway/i18n/messages/loggers/sout/SoutMessageLogger.java +++ b/gateway-i18n/src/main/java/org/apache/knox/gateway/i18n/messages/loggers/sout/SoutMessageLogger.java @@ -21,6 +21,7 @@ import org.apache.knox.gateway.i18n.messages.MessageLevel; import org.apache.knox.gateway.i18n.messages.MessageLogger; import java.text.MessageFormat; +import java.util.Locale; /** * @@ -47,7 +48,8 @@ public class SoutMessageLogger implements MessageLogger { @Override public void log( final StackTraceElement caller, final MessageLevel level, final String id, final String message, final Throwable thrown ) { - System.out.println( MessageFormat.format( getFormat( id ), level, id, message ) ); // I18N not required. + MessageFormat messageFormat = new MessageFormat(getFormat( id ), Locale.ROOT ); + System.out.println( messageFormat.format(new Object[]{level, id, message}) ); // I18N not required. if( thrown != null ) { thrown.printStackTrace(); } http://git-wip-us.apache.org/repos/asf/knox/blob/159bb800/gateway-i18n/src/main/java/org/apache/knox/gateway/i18n/resources/ResourcesInvoker.java ---------------------------------------------------------------------- diff --git a/gateway-i18n/src/main/java/org/apache/knox/gateway/i18n/resources/ResourcesInvoker.java b/gateway-i18n/src/main/java/org/apache/knox/gateway/i18n/resources/ResourcesInvoker.java index 065da0c..f1236a9 100644 --- a/gateway-i18n/src/main/java/org/apache/knox/gateway/i18n/resources/ResourcesInvoker.java +++ b/gateway-i18n/src/main/java/org/apache/knox/gateway/i18n/resources/ResourcesInvoker.java @@ -55,8 +55,8 @@ public class ResourcesInvoker implements InvocationHandler { protected final String getText( final Method method, final Object[] args ) { String pattern = getPattern( method ); - String text = MessageFormat.format( pattern, args ); - return text; + MessageFormat messageFormat = new MessageFormat(pattern, Locale.ROOT ); + return messageFormat.format(args); } protected final String getPattern( final Method method ) { http://git-wip-us.apache.org/repos/asf/knox/blob/159bb800/gateway-provider-ha/src/test/java/org/apache/knox/gateway/ha/provider/impl/HS2ZookeeperURLManagerTest.java ---------------------------------------------------------------------- diff --git a/gateway-provider-ha/src/test/java/org/apache/knox/gateway/ha/provider/impl/HS2ZookeeperURLManagerTest.java b/gateway-provider-ha/src/test/java/org/apache/knox/gateway/ha/provider/impl/HS2ZookeeperURLManagerTest.java index 53f1e5e..abf5af1 100644 --- a/gateway-provider-ha/src/test/java/org/apache/knox/gateway/ha/provider/impl/HS2ZookeeperURLManagerTest.java +++ b/gateway-provider-ha/src/test/java/org/apache/knox/gateway/ha/provider/impl/HS2ZookeeperURLManagerTest.java @@ -30,10 +30,10 @@ import org.junit.Before; import org.junit.Test; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.util.List; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; public class HS2ZookeeperURLManagerTest { @@ -59,10 +59,10 @@ public class HS2ZookeeperURLManagerTest { "hive.server2.thrift.http.port=10004;hive.server2.thrift.bind.host=host4;hive.server2.use.SSL=true"; zooKeeperClient.start(); zooKeeperClient.create().forPath("/hiveServer2"); - zooKeeperClient.create().forPath("/hiveServer2/host1", host1.getBytes()); - zooKeeperClient.create().forPath("/hiveServer2/host2", host2.getBytes()); - zooKeeperClient.create().forPath("/hiveServer2/host3", host3.getBytes()); - zooKeeperClient.create().forPath("/hiveServer2/host4", host4.getBytes()); + zooKeeperClient.create().forPath("/hiveServer2/host1", host1.getBytes(StandardCharsets.UTF_8)); + zooKeeperClient.create().forPath("/hiveServer2/host2", host2.getBytes(StandardCharsets.UTF_8)); + zooKeeperClient.create().forPath("/hiveServer2/host3", host3.getBytes(StandardCharsets.UTF_8)); + zooKeeperClient.create().forPath("/hiveServer2/host4", host4.getBytes(StandardCharsets.UTF_8)); zooKeeperClient.close(); manager = new HS2ZookeeperURLManager(); HaServiceConfig config = new DefaultHaServiceConfig("HIVE"); http://git-wip-us.apache.org/repos/asf/knox/blob/159bb800/gateway-provider-ha/src/test/java/org/apache/knox/gateway/ha/provider/impl/HaDescriptorManagerTest.java ---------------------------------------------------------------------- diff --git a/gateway-provider-ha/src/test/java/org/apache/knox/gateway/ha/provider/impl/HaDescriptorManagerTest.java b/gateway-provider-ha/src/test/java/org/apache/knox/gateway/ha/provider/impl/HaDescriptorManagerTest.java index c9ed2c7..dfaeea2 100644 --- a/gateway-provider-ha/src/test/java/org/apache/knox/gateway/ha/provider/impl/HaDescriptorManagerTest.java +++ b/gateway-provider-ha/src/test/java/org/apache/knox/gateway/ha/provider/impl/HaDescriptorManagerTest.java @@ -24,8 +24,13 @@ import org.junit.Test; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.StringWriter; +import java.nio.charset.StandardCharsets; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; import static org.xmlmatchers.XmlMatchers.hasXPath; import static org.xmlmatchers.transform.XmlConverters.the; @@ -35,7 +40,7 @@ public class HaDescriptorManagerTest { public void testDescriptorLoad() throws IOException { String xml = "<ha><service name='foo' maxFailoverAttempts='42' failoverSleep='4000' maxRetryAttempts='2' retrySleep='2213' enabled='false'/>" + "<service name='bar' failoverLimit='3' enabled='true'/></ha>"; - ByteArrayInputStream inputStream = new ByteArrayInputStream(xml.getBytes()); + ByteArrayInputStream inputStream = new ByteArrayInputStream(xml.getBytes(StandardCharsets.UTF_8)); HaDescriptor descriptor = HaDescriptorManager.load(inputStream); assertNotNull(descriptor); assertEquals(1, descriptor.getEnabledServiceNames().size()); @@ -54,7 +59,7 @@ public class HaDescriptorManagerTest { @Test public void testDescriptorDefaults() throws IOException { String xml = "<ha><service name='foo'/></ha>"; - ByteArrayInputStream inputStream = new ByteArrayInputStream(xml.getBytes()); + ByteArrayInputStream inputStream = new ByteArrayInputStream(xml.getBytes(StandardCharsets.UTF_8)); HaDescriptor descriptor = HaDescriptorManager.load(inputStream); assertNotNull(descriptor); assertEquals(1, descriptor.getEnabledServiceNames().size()); http://git-wip-us.apache.org/repos/asf/knox/blob/159bb800/gateway-provider-identity-assertion-common/src/main/java/org/apache/knox/gateway/identityasserter/common/filter/AbstractIdentityAsserterDeploymentContributor.java ---------------------------------------------------------------------- diff --git a/gateway-provider-identity-assertion-common/src/main/java/org/apache/knox/gateway/identityasserter/common/filter/AbstractIdentityAsserterDeploymentContributor.java b/gateway-provider-identity-assertion-common/src/main/java/org/apache/knox/gateway/identityasserter/common/filter/AbstractIdentityAsserterDeploymentContributor.java index 8f2adb8..ef63071 100644 --- a/gateway-provider-identity-assertion-common/src/main/java/org/apache/knox/gateway/identityasserter/common/filter/AbstractIdentityAsserterDeploymentContributor.java +++ b/gateway-provider-identity-assertion-common/src/main/java/org/apache/knox/gateway/identityasserter/common/filter/AbstractIdentityAsserterDeploymentContributor.java @@ -26,6 +26,7 @@ import org.apache.knox.gateway.topology.Service; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Map.Entry; @@ -52,7 +53,7 @@ public abstract class AbstractIdentityAsserterDeploymentContributor extends } Map<String, String> providerParams = provider.getParams(); for(Entry<String, String> entry : providerParams.entrySet()) { - params.add( resource.createFilterParam().name(entry.getKey().toLowerCase()).value(entry.getValue())); + params.add( resource.createFilterParam().name(entry.getKey().toLowerCase(Locale.ROOT)).value(entry.getValue())); } return params; } http://git-wip-us.apache.org/repos/asf/knox/blob/159bb800/gateway-provider-identity-assertion-common/src/test/java/org/apache/knox/gateway/identityasserter/filter/CommonIdentityAssertionFilterTest.java ---------------------------------------------------------------------- diff --git a/gateway-provider-identity-assertion-common/src/test/java/org/apache/knox/gateway/identityasserter/filter/CommonIdentityAssertionFilterTest.java b/gateway-provider-identity-assertion-common/src/test/java/org/apache/knox/gateway/identityasserter/filter/CommonIdentityAssertionFilterTest.java index bd5b32c..0125a99 100644 --- a/gateway-provider-identity-assertion-common/src/test/java/org/apache/knox/gateway/identityasserter/filter/CommonIdentityAssertionFilterTest.java +++ b/gateway-provider-identity-assertion-common/src/test/java/org/apache/knox/gateway/identityasserter/filter/CommonIdentityAssertionFilterTest.java @@ -17,13 +17,12 @@ */ package org.apache.knox.gateway.identityasserter.filter; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -import java.io.IOException; -import java.net.URISyntaxException; -import java.security.PrivilegedActionException; -import java.security.PrivilegedExceptionAction; +import org.apache.knox.gateway.identityasserter.common.filter.CommonIdentityAssertionFilter; +import org.apache.knox.gateway.security.GroupPrincipal; +import org.apache.knox.gateway.security.PrimaryPrincipal; +import org.easymock.EasyMock; +import org.junit.Before; +import org.junit.Test; import javax.security.auth.Subject; import javax.servlet.Filter; @@ -34,13 +33,14 @@ import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.net.URISyntaxException; +import java.security.PrivilegedActionException; +import java.security.PrivilegedExceptionAction; +import java.util.Locale; -import org.apache.knox.gateway.identityasserter.common.filter.CommonIdentityAssertionFilter; -import org.apache.knox.gateway.security.GroupPrincipal; -import org.apache.knox.gateway.security.PrimaryPrincipal; -import org.easymock.EasyMock; -import org.junit.Before; -import org.junit.Test; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; /** * @author larry @@ -57,7 +57,7 @@ public class CommonIdentityAssertionFilterTest { filter = new CommonIdentityAssertionFilter() { @Override public String mapUserPrincipal(String principalName) { - username = principalName.toUpperCase(); + username = principalName.toUpperCase(Locale.ROOT); return principalName; } @@ -66,7 +66,7 @@ public class CommonIdentityAssertionFilterTest { String[] groups = new String[2]; int i = 0; for(GroupPrincipal p : subject.getPrincipals(GroupPrincipal.class)) { - groups[i] = p.getName().toUpperCase(); + groups[i] = p.getName().toUpperCase(Locale.ROOT); i++; } mappedGroups = groups; http://git-wip-us.apache.org/repos/asf/knox/blob/159bb800/gateway-provider-identity-assertion-hadoop-groups/src/main/java/org/apache/knox/gateway/identityasserter/hadoop/groups/filter/HadoopGroupProviderDeploymentContributor.java ---------------------------------------------------------------------- diff --git a/gateway-provider-identity-assertion-hadoop-groups/src/main/java/org/apache/knox/gateway/identityasserter/hadoop/groups/filter/HadoopGroupProviderDeploymentContributor.java b/gateway-provider-identity-assertion-hadoop-groups/src/main/java/org/apache/knox/gateway/identityasserter/hadoop/groups/filter/HadoopGroupProviderDeploymentContributor.java index 4d31132..ed144ed 100644 --- a/gateway-provider-identity-assertion-hadoop-groups/src/main/java/org/apache/knox/gateway/identityasserter/hadoop/groups/filter/HadoopGroupProviderDeploymentContributor.java +++ b/gateway-provider-identity-assertion-hadoop-groups/src/main/java/org/apache/knox/gateway/identityasserter/hadoop/groups/filter/HadoopGroupProviderDeploymentContributor.java @@ -17,11 +17,6 @@ */ package org.apache.knox.gateway.identityasserter.hadoop.groups.filter; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - import org.apache.hadoop.conf.Configuration; import org.apache.knox.gateway.deploy.DeploymentContext; import org.apache.knox.gateway.descriptor.FilterParamDescriptor; @@ -30,6 +25,12 @@ import org.apache.knox.gateway.identityasserter.common.filter.AbstractIdentityAs import org.apache.knox.gateway.topology.Provider; import org.apache.knox.gateway.topology.Service; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Map.Entry; + /** * A provider deployment contributor for looking up authenticated user groups as * seen by Hadoop implementation. @@ -111,7 +112,7 @@ public class HadoopGroupProviderDeploymentContributor params = new ArrayList<FilterParamDescriptor>(); } for(Entry<String, String> entry : providerParams.entrySet()) { - params.add( resource.createFilterParam().name(entry.getKey().toLowerCase()).value(entry.getValue())); + params.add( resource.createFilterParam().name(entry.getKey().toLowerCase(Locale.ROOT)).value(entry.getValue())); } return params; } http://git-wip-us.apache.org/repos/asf/knox/blob/159bb800/gateway-provider-identity-assertion-switchcase/src/main/java/org/apache/knox/gateway/identityasserter/switchcase/SwitchCaseIdentityAssertionFilter.java ---------------------------------------------------------------------- diff --git a/gateway-provider-identity-assertion-switchcase/src/main/java/org/apache/knox/gateway/identityasserter/switchcase/SwitchCaseIdentityAssertionFilter.java b/gateway-provider-identity-assertion-switchcase/src/main/java/org/apache/knox/gateway/identityasserter/switchcase/SwitchCaseIdentityAssertionFilter.java index 01e874d..5ddb5c8 100644 --- a/gateway-provider-identity-assertion-switchcase/src/main/java/org/apache/knox/gateway/identityasserter/switchcase/SwitchCaseIdentityAssertionFilter.java +++ b/gateway-provider-identity-assertion-switchcase/src/main/java/org/apache/knox/gateway/identityasserter/switchcase/SwitchCaseIdentityAssertionFilter.java @@ -17,13 +17,14 @@ */ package org.apache.knox.gateway.identityasserter.switchcase; -import java.util.Set; +import org.apache.knox.gateway.identityasserter.common.filter.CommonIdentityAssertionFilter; +import org.apache.knox.gateway.security.GroupPrincipal; + import javax.security.auth.Subject; import javax.servlet.FilterConfig; import javax.servlet.ServletException; - -import org.apache.knox.gateway.identityasserter.common.filter.CommonIdentityAssertionFilter; -import org.apache.knox.gateway.security.GroupPrincipal; +import java.util.Locale; +import java.util.Set; public class SwitchCaseIdentityAssertionFilter extends CommonIdentityAssertionFilter { @@ -43,7 +44,7 @@ public class SwitchCaseIdentityAssertionFilter extends String s; s = filterConfig.getInitParameter( USER_INIT_PARAM ); if ( s != null ) { - s = s.trim().toUpperCase(); + s = s.trim().toUpperCase(Locale.ROOT); try { userCase = SwitchCase.valueOf( s ); groupCase = userCase; @@ -53,7 +54,7 @@ public class SwitchCaseIdentityAssertionFilter extends } s = filterConfig.getInitParameter( GROUP_INIT_PARAM ); if ( s != null ) { - s = s.trim().toUpperCase(); + s = s.trim().toUpperCase(Locale.ROOT); try { groupCase = SwitchCase.valueOf( s ); } catch ( IllegalArgumentException e ) { @@ -87,9 +88,9 @@ public class SwitchCaseIdentityAssertionFilter extends if ( name != null ) { switch( switchCase ) { case UPPER: - return name.toUpperCase(); + return name.toUpperCase(Locale.ROOT); case LOWER: - return name.toLowerCase(); + return name.toLowerCase(Locale.ROOT); } } return name; http://git-wip-us.apache.org/repos/asf/knox/blob/159bb800/gateway-provider-rewrite-step-secure-query/src/test/java/org/apache/knox/gateway/securequery/SecureQueryDecodeProcessorTest.java ---------------------------------------------------------------------- diff --git a/gateway-provider-rewrite-step-secure-query/src/test/java/org/apache/knox/gateway/securequery/SecureQueryDecodeProcessorTest.java b/gateway-provider-rewrite-step-secure-query/src/test/java/org/apache/knox/gateway/securequery/SecureQueryDecodeProcessorTest.java index 4ef447f..10c6b60 100644 --- a/gateway-provider-rewrite-step-secure-query/src/test/java/org/apache/knox/gateway/securequery/SecureQueryDecodeProcessorTest.java +++ b/gateway-provider-rewrite-step-secure-query/src/test/java/org/apache/knox/gateway/securequery/SecureQueryDecodeProcessorTest.java @@ -24,10 +24,11 @@ import org.apache.knox.gateway.util.urltemplate.Template; import org.easymock.Capture; import org.easymock.EasyMock; import org.junit.Test; -import sun.misc.BASE64Encoder; import java.io.IOException; import java.net.URL; +import java.nio.charset.StandardCharsets; +import java.util.Base64; import java.util.List; import static org.hamcrest.CoreMatchers.containsString; @@ -56,8 +57,7 @@ public class SecureQueryDecodeProcessorTest { } }; - BASE64Encoder encoder = new BASE64Encoder(); - String encQuery = encoder.encode( "test-query".getBytes("utf-8" ) ); + String encQuery = Base64.getEncoder().encodeToString( "test-query".getBytes(StandardCharsets.UTF_8) ); encQuery = encQuery.replaceAll( "\\=", "" ); String inString = "http://host:0/root/path?_=" + encQuery; Template inTemplate = Parser.parseLiteral( inString ); @@ -96,9 +96,8 @@ public class SecureQueryDecodeProcessorTest { } }; - BASE64Encoder encoder = new BASE64Encoder(); String inQuery = "test-query=test-value"; - String encQuery = encoder.encode( inQuery.getBytes( "utf-8" ) ); + String encQuery = Base64.getEncoder().encodeToString( inQuery.getBytes( StandardCharsets.UTF_8 ) ); encQuery = encQuery.replaceAll( "\\=", "" ); String inString = "http://host:0/root/path?_=" + encQuery + "&clear-param=clear-value"; Template inTemplate = Parser.parseLiteral( inString ); http://git-wip-us.apache.org/repos/asf/knox/blob/159bb800/gateway-provider-rewrite-step-secure-query/src/test/java/org/apache/knox/gateway/securequery/SecureQueryEncodeProcessorTest.java ---------------------------------------------------------------------- diff --git a/gateway-provider-rewrite-step-secure-query/src/test/java/org/apache/knox/gateway/securequery/SecureQueryEncodeProcessorTest.java b/gateway-provider-rewrite-step-secure-query/src/test/java/org/apache/knox/gateway/securequery/SecureQueryEncodeProcessorTest.java index 24157a1..87258bc 100644 --- a/gateway-provider-rewrite-step-secure-query/src/test/java/org/apache/knox/gateway/securequery/SecureQueryEncodeProcessorTest.java +++ b/gateway-provider-rewrite-step-secure-query/src/test/java/org/apache/knox/gateway/securequery/SecureQueryEncodeProcessorTest.java @@ -17,20 +17,20 @@ */ package org.apache.knox.gateway.securequery; -import java.util.Arrays; - import org.apache.knox.gateway.filter.rewrite.api.UrlRewriteEnvironment; import org.apache.knox.gateway.filter.rewrite.spi.UrlRewriteContext; import org.apache.knox.gateway.services.GatewayServices; import org.apache.knox.gateway.services.security.AliasService; -import org.apache.knox.gateway.services.security.CryptoService; import org.apache.knox.gateway.services.security.impl.DefaultCryptoService; import org.apache.knox.gateway.util.urltemplate.Parser; import org.apache.knox.gateway.util.urltemplate.Template; import org.easymock.Capture; import org.easymock.EasyMock; import org.junit.Test; -import sun.misc.BASE64Encoder; + +import java.nio.charset.StandardCharsets; +import java.util.Base64; +import java.util.Collections; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; @@ -42,14 +42,14 @@ public class SecureQueryEncodeProcessorTest { AliasService as = EasyMock.createNiceMock( AliasService.class ); String secret = "sdkjfhsdkjfhsdfs"; EasyMock.expect( as.getPasswordFromAliasForCluster("test-cluster-name", "encryptQueryString")).andReturn( secret.toCharArray() ).anyTimes(); - CryptoService cryptoService = new DefaultCryptoService(); - ((DefaultCryptoService)cryptoService).setAliasService(as); + DefaultCryptoService cryptoService = new DefaultCryptoService(); + cryptoService.setAliasService(as); GatewayServices gatewayServices = EasyMock.createNiceMock( GatewayServices.class ); EasyMock.expect( gatewayServices.getService( GatewayServices.CRYPTO_SERVICE ) ).andReturn( cryptoService ); UrlRewriteEnvironment environment = EasyMock.createNiceMock( UrlRewriteEnvironment.class ); EasyMock.expect( environment.getAttribute( GatewayServices.GATEWAY_SERVICES_ATTRIBUTE ) ).andReturn( gatewayServices ).anyTimes(); - EasyMock.expect( environment.getAttribute( GatewayServices.GATEWAY_CLUSTER_ATTRIBUTE ) ).andReturn( Arrays.asList( "test-cluster-name" ) ).anyTimes(); + EasyMock.expect( environment.getAttribute( GatewayServices.GATEWAY_CLUSTER_ATTRIBUTE ) ).andReturn(Collections.singletonList("test-cluster-name")).anyTimes(); Template inTemplate = Parser.parseLiteral( "http://host:0/root/path?query" ); UrlRewriteContext context = EasyMock.createNiceMock( UrlRewriteContext.class ); @@ -64,8 +64,7 @@ public class SecureQueryEncodeProcessorTest { processor.initialize( environment, descriptor ); processor.process( context ); - BASE64Encoder encoder = new BASE64Encoder(); - String encQuery = encoder.encode( "query".getBytes("utf-8" ) ); + String encQuery = Base64.getEncoder().encodeToString( "query".getBytes(StandardCharsets.UTF_8) ); encQuery = encQuery.replaceAll( "\\=", "" ); String outExpect = "http://host:0/root/path?_=" + encQuery; String outActual = outTemplate.getValue().toString(); http://git-wip-us.apache.org/repos/asf/knox/blob/159bb800/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/CookieScopeResponseWrapper.java ---------------------------------------------------------------------- diff --git a/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/CookieScopeResponseWrapper.java b/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/CookieScopeResponseWrapper.java index 8fbc3a7..252c6b8 100644 --- a/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/CookieScopeResponseWrapper.java +++ b/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/CookieScopeResponseWrapper.java @@ -22,6 +22,7 @@ import org.apache.knox.gateway.filter.GatewayResponseWrapper; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.OutputStream; +import java.util.Locale; public class CookieScopeResponseWrapper extends GatewayResponseWrapper { @@ -44,7 +45,7 @@ public class CookieScopeResponseWrapper extends GatewayResponseWrapper { updatedCookie = value.replace(COOKIE_PATH, scopePath); } else { // append the scope path - updatedCookie = String.format("%s %s;", value, scopePath); + updatedCookie = String.format(Locale.ROOT, "%s %s;", value, scopePath); } super.addHeader(name, updatedCookie); } else { http://git-wip-us.apache.org/repos/asf/knox/blob/159bb800/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/FrontendFunctionProcessor.java ---------------------------------------------------------------------- diff --git a/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/FrontendFunctionProcessor.java b/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/FrontendFunctionProcessor.java index 77ca25e..df0b74f 100644 --- a/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/FrontendFunctionProcessor.java +++ b/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/FrontendFunctionProcessor.java @@ -30,6 +30,7 @@ import java.net.URI; import java.util.Arrays; import java.util.HashMap; import java.util.List; +import java.util.Locale; import java.util.Map; public class FrontendFunctionProcessor implements UrlRewriteFunctionProcessor<FrontendFunctionDescriptor> { @@ -83,7 +84,7 @@ public class FrontendFunctionProcessor implements UrlRewriteFunctionProcessor<Fr parameter = first; } } - parameter = parameter.trim().toLowerCase(); + parameter = parameter.trim().toLowerCase(Locale.ROOT); UrlRewriteResolver resolver = resolvers.get( parameter ); if( resolver == null ) { throw new IllegalArgumentException( RES.invalidFrontendFunctionParameter( parameter ) ); http://git-wip-us.apache.org/repos/asf/knox/blob/159bb800/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/UrlRewriteRuleDescriptorImpl.java ---------------------------------------------------------------------- diff --git a/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/UrlRewriteRuleDescriptorImpl.java b/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/UrlRewriteRuleDescriptorImpl.java index d86c670..cf9a654 100644 --- a/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/UrlRewriteRuleDescriptorImpl.java +++ b/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/UrlRewriteRuleDescriptorImpl.java @@ -27,6 +27,7 @@ import org.apache.knox.gateway.util.urltemplate.Template; import java.net.URISyntaxException; import java.util.EnumSet; import java.util.HashMap; +import java.util.Locale; import java.util.Map; import java.util.StringTokenizer; @@ -173,7 +174,7 @@ public class UrlRewriteRuleDescriptorImpl extends UrlRewriteFlowDescriptorBase<U } private static UrlRewriter.Direction parseDirection( String direction ) { - direction = direction.trim().toLowerCase(); + direction = direction.trim().toLowerCase( Locale.ROOT ); return directionNameMap.get( direction ); } http://git-wip-us.apache.org/repos/asf/knox/blob/159bb800/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/html/HtmlFilterReaderBase.java ---------------------------------------------------------------------- diff --git a/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/html/HtmlFilterReaderBase.java b/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/html/HtmlFilterReaderBase.java index b90771b..cb73d10 100644 --- a/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/html/HtmlFilterReaderBase.java +++ b/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/html/HtmlFilterReaderBase.java @@ -42,6 +42,7 @@ import java.io.Reader; import java.io.StringWriter; import java.util.HashMap; import java.util.Iterator; +import java.util.Locale; import java.util.Map; import java.util.Stack; import java.util.regex.Matcher; @@ -308,7 +309,7 @@ public abstract class HtmlFilterReaderBase extends Reader implements if( attributes != null ) { for( Attribute attribute : tag.getAttributes() ) { String name = attribute.getName(); - if( name.toLowerCase().startsWith( "xmlns" ) ) { + if( name.toLowerCase(Locale.ROOT).startsWith( "xmlns" ) ) { int colon = name.indexOf( ":", 5 ); String prefix; if( colon <= 0 ) { http://git-wip-us.apache.org/repos/asf/knox/blob/159bb800/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/spi/UrlRewriteFlowDescriptorBase.java ---------------------------------------------------------------------- diff --git a/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/spi/UrlRewriteFlowDescriptorBase.java b/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/spi/UrlRewriteFlowDescriptorBase.java index fcfee24..7fb4a54 100644 --- a/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/spi/UrlRewriteFlowDescriptorBase.java +++ b/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/spi/UrlRewriteFlowDescriptorBase.java @@ -24,6 +24,7 @@ import org.apache.knox.gateway.filter.rewrite.api.UrlRewriteStepFlow; import java.util.ArrayList; import java.util.List; +import java.util.Locale; public abstract class UrlRewriteFlowDescriptorBase<T> extends UrlRewriteStepDescriptorBase<T> implements UrlRewriteFlowDescriptor<T> { @@ -59,7 +60,7 @@ public abstract class UrlRewriteFlowDescriptorBase<T> extends UrlRewriteStepDesc } public void setFlow( String flow ) { - flow = flow.trim().toUpperCase(); + flow = flow.trim().toUpperCase(Locale.ROOT); this.flow = Enum.valueOf( UrlRewriteStepFlow.class, flow ); } http://git-wip-us.apache.org/repos/asf/knox/blob/159bb800/gateway-provider-rewrite/src/test/java/org/apache/knox/gateway/filter/rewrite/api/UrlRewriteServletFilterTest.java ---------------------------------------------------------------------- diff --git a/gateway-provider-rewrite/src/test/java/org/apache/knox/gateway/filter/rewrite/api/UrlRewriteServletFilterTest.java b/gateway-provider-rewrite/src/test/java/org/apache/knox/gateway/filter/rewrite/api/UrlRewriteServletFilterTest.java index 5ab8662..a93f5b9 100644 --- a/gateway-provider-rewrite/src/test/java/org/apache/knox/gateway/filter/rewrite/api/UrlRewriteServletFilterTest.java +++ b/gateway-provider-rewrite/src/test/java/org/apache/knox/gateway/filter/rewrite/api/UrlRewriteServletFilterTest.java @@ -27,9 +27,9 @@ import org.apache.knox.test.mock.MockServlet; import org.apache.log4j.Appender; import org.apache.log4j.Logger; import org.eclipse.jetty.http.HttpHeader; +import org.eclipse.jetty.http.HttpTester; import org.eclipse.jetty.servlet.FilterHolder; import org.eclipse.jetty.servlet.ServletHolder; -import org.eclipse.jetty.http.HttpTester; import org.eclipse.jetty.servlet.ServletTester; import org.eclipse.jetty.util.ArrayQueue; import org.junit.After; @@ -47,6 +47,7 @@ import java.io.IOException; import java.net.URISyntaxException; import java.net.URL; import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.util.EnumSet; import java.util.Enumeration; import java.util.HashMap; @@ -56,7 +57,6 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.anyOf; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.core.Is.is; -import static org.junit.Assert.fail; import static org.xmlmatchers.XmlMatchers.hasXPath; import static org.xmlmatchers.transform.XmlConverters.the; @@ -121,7 +121,7 @@ public class UrlRewriteServletFilterTest { interaction.expect() .method( "GET" ) .requestUrl( "http://mock-host:1/test-output-path-1" ); - interaction.respond().status( 200 ).content( "test-response-content".getBytes() ); + interaction.respond().status( 200 ).content( "test-response-content".getBytes(StandardCharsets.UTF_8) ); interactions.add( interaction ); // Create the client request. request.setMethod( "GET" ); http://git-wip-us.apache.org/repos/asf/knox/blob/159bb800/gateway-provider-rewrite/src/test/java/org/apache/knox/gateway/filter/rewrite/impl/UrlRewriteResponseTest.java ---------------------------------------------------------------------- diff --git a/gateway-provider-rewrite/src/test/java/org/apache/knox/gateway/filter/rewrite/impl/UrlRewriteResponseTest.java b/gateway-provider-rewrite/src/test/java/org/apache/knox/gateway/filter/rewrite/impl/UrlRewriteResponseTest.java index d3a9e33..432ff85 100644 --- a/gateway-provider-rewrite/src/test/java/org/apache/knox/gateway/filter/rewrite/impl/UrlRewriteResponseTest.java +++ b/gateway-provider-rewrite/src/test/java/org/apache/knox/gateway/filter/rewrite/impl/UrlRewriteResponseTest.java @@ -29,13 +29,13 @@ import javax.servlet.FilterConfig; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; - import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.nio.charset.StandardCharsets; import java.util.List; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; @@ -148,7 +148,7 @@ public class UrlRewriteResponseTest { InputStream inStream = null, input = null; try { outStream = isGzip ? new GZIPOutputStream( new FileOutputStream( inputFile ) ) : new FileOutputStream( inputFile ); - outStream.write( content.getBytes() ); + outStream.write( content.getBytes(StandardCharsets.UTF_8) ); outStream.close(); input = new FileInputStream( inputFile ); http://git-wip-us.apache.org/repos/asf/knox/blob/159bb800/gateway-provider-security-authc-anon/src/main/java/org/apache/knox/gateway/deploy/AnonymousAuthDeploymentContributor.java ---------------------------------------------------------------------- diff --git a/gateway-provider-security-authc-anon/src/main/java/org/apache/knox/gateway/deploy/AnonymousAuthDeploymentContributor.java b/gateway-provider-security-authc-anon/src/main/java/org/apache/knox/gateway/deploy/AnonymousAuthDeploymentContributor.java index 533064e..bdd56c2 100755 --- a/gateway-provider-security-authc-anon/src/main/java/org/apache/knox/gateway/deploy/AnonymousAuthDeploymentContributor.java +++ b/gateway-provider-security-authc-anon/src/main/java/org/apache/knox/gateway/deploy/AnonymousAuthDeploymentContributor.java @@ -17,16 +17,17 @@ */ package org.apache.knox.gateway.deploy; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - import org.apache.knox.gateway.descriptor.FilterParamDescriptor; import org.apache.knox.gateway.descriptor.ResourceDescriptor; import org.apache.knox.gateway.topology.Provider; import org.apache.knox.gateway.topology.Service; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Map.Entry; + public class AnonymousAuthDeploymentContributor extends ProviderDeploymentContributorBase { private static final String ROLE = "authentication"; @@ -58,7 +59,7 @@ public class AnonymousAuthDeploymentContributor extends ProviderDeploymentContri } Map<String, String> providerParams = provider.getParams(); for(Entry<String, String> entry : providerParams.entrySet()) { - params.add( resource.createFilterParam().name( entry.getKey().toLowerCase() ).value( entry.getValue() ) ); + params.add( resource.createFilterParam().name( entry.getKey().toLowerCase(Locale.ROOT) ).value( entry.getValue() ) ); } resource.addFilter().name( getName() ).role( getRole() ).impl(FILTER_CLASSNAME).params( params ); } http://git-wip-us.apache.org/repos/asf/knox/blob/159bb800/gateway-provider-security-authz-acls/src/main/java/org/apache/knox/gateway/deploy/impl/AclsAuthzDeploymentContributor.java ---------------------------------------------------------------------- diff --git a/gateway-provider-security-authz-acls/src/main/java/org/apache/knox/gateway/deploy/impl/AclsAuthzDeploymentContributor.java b/gateway-provider-security-authz-acls/src/main/java/org/apache/knox/gateway/deploy/impl/AclsAuthzDeploymentContributor.java index 6d5c262..f8d921b 100644 --- a/gateway-provider-security-authz-acls/src/main/java/org/apache/knox/gateway/deploy/impl/AclsAuthzDeploymentContributor.java +++ b/gateway-provider-security-authz-acls/src/main/java/org/apache/knox/gateway/deploy/impl/AclsAuthzDeploymentContributor.java @@ -26,6 +26,7 @@ import org.apache.knox.gateway.topology.Service; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Map.Entry; @@ -73,7 +74,7 @@ public class AclsAuthzDeploymentContributor extends ProviderDeploymentContributo // this will include any {resource.role}-ACLS parameters to be enforced - such as NAMENODE-ACLS Map<String, String> providerParams = provider.getParams(); for(Entry<String, String> entry : providerParams.entrySet()) { - params.add( resource.createFilterParam().name( entry.getKey().toLowerCase() ).value( entry.getValue() ) ); + params.add( resource.createFilterParam().name( entry.getKey().toLowerCase(Locale.ROOT) ).value( entry.getValue() ) ); } resource.addFilter().name( getName() ).role( getRole() ).impl( FILTER_CLASSNAME ).params( params ); http://git-wip-us.apache.org/repos/asf/knox/blob/159bb800/gateway-provider-security-authz-acls/src/main/java/org/apache/knox/gateway/filter/AclsAuthorizationFilter.java ---------------------------------------------------------------------- diff --git a/gateway-provider-security-authz-acls/src/main/java/org/apache/knox/gateway/filter/AclsAuthorizationFilter.java b/gateway-provider-security-authz-acls/src/main/java/org/apache/knox/gateway/filter/AclsAuthorizationFilter.java index bdb602c..7c547d0 100644 --- a/gateway-provider-security-authz-acls/src/main/java/org/apache/knox/gateway/filter/AclsAuthorizationFilter.java +++ b/gateway-provider-security-authz-acls/src/main/java/org/apache/knox/gateway/filter/AclsAuthorizationFilter.java @@ -17,16 +17,6 @@ */ package org.apache.knox.gateway.filter; -import javax.security.auth.Subject; -import javax.servlet.Filter; -import javax.servlet.FilterChain; -import javax.servlet.FilterConfig; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import org.apache.knox.gateway.audit.api.Action; import org.apache.knox.gateway.audit.api.ActionOutcome; import org.apache.knox.gateway.audit.api.AuditServiceFactory; @@ -38,12 +28,22 @@ import org.apache.knox.gateway.security.GroupPrincipal; import org.apache.knox.gateway.security.ImpersonatedPrincipal; import org.apache.knox.gateway.security.PrimaryPrincipal; +import javax.security.auth.Subject; +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.security.AccessController; import java.security.Principal; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Locale; public class AclsAuthorizationFilter implements Filter { private static AclsAuthorizationMessages log = MessagesFactory.get( AclsAuthorizationMessages.class ); @@ -84,7 +84,7 @@ public class AclsAuthorizationFilter implements Filter { } private String getInitParameter(FilterConfig filterConfig, String paramName) { - return filterConfig.getInitParameter(paramName.toLowerCase()); + return filterConfig.getInitParameter(paramName.toLowerCase(Locale.ROOT)); } private void parseAdminGroupConfig(String groups) { http://git-wip-us.apache.org/repos/asf/knox/blob/159bb800/gateway-provider-security-hadoopauth/src/main/java/org/apache/knox/gateway/hadoopauth/deploy/HadoopAuthDeploymentContributor.java ---------------------------------------------------------------------- diff --git a/gateway-provider-security-hadoopauth/src/main/java/org/apache/knox/gateway/hadoopauth/deploy/HadoopAuthDeploymentContributor.java b/gateway-provider-security-hadoopauth/src/main/java/org/apache/knox/gateway/hadoopauth/deploy/HadoopAuthDeploymentContributor.java index 14e7490..3068669 100755 --- a/gateway-provider-security-hadoopauth/src/main/java/org/apache/knox/gateway/hadoopauth/deploy/HadoopAuthDeploymentContributor.java +++ b/gateway-provider-security-hadoopauth/src/main/java/org/apache/knox/gateway/hadoopauth/deploy/HadoopAuthDeploymentContributor.java @@ -17,11 +17,6 @@ */ package org.apache.knox.gateway.hadoopauth.deploy; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - import org.apache.knox.gateway.deploy.DeploymentContext; import org.apache.knox.gateway.deploy.ProviderDeploymentContributorBase; import org.apache.knox.gateway.descriptor.FilterParamDescriptor; @@ -29,6 +24,12 @@ import org.apache.knox.gateway.descriptor.ResourceDescriptor; import org.apache.knox.gateway.topology.Provider; import org.apache.knox.gateway.topology.Service; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Map.Entry; + public class HadoopAuthDeploymentContributor extends ProviderDeploymentContributorBase { @@ -62,7 +63,7 @@ public class HadoopAuthDeploymentContributor extends } Map<String, String> providerParams = provider.getParams(); for(Entry<String, String> entry : providerParams.entrySet()) { - params.add( resource.createFilterParam().name( entry.getKey().toLowerCase() ).value( entry.getValue() ) ); + params.add( resource.createFilterParam().name( entry.getKey().toLowerCase(Locale.ROOT) ).value( entry.getValue() ) ); } resource.addFilter().name( getName() ).role( getRole() ).impl( HADOOPAUTH_FILTER_CLASSNAME ).params( params ); resource.addFilter().name( "Post" + getName() ).role( getRole() ).impl( HADOOPAUTH_POSTFILTER_CLASSNAME ).params( params ); http://git-wip-us.apache.org/repos/asf/knox/blob/159bb800/gateway-provider-security-jwt/src/main/java/org/apache/knox/gateway/provider/federation/jwt/deploy/JWTFederationContributor.java ---------------------------------------------------------------------- diff --git a/gateway-provider-security-jwt/src/main/java/org/apache/knox/gateway/provider/federation/jwt/deploy/JWTFederationContributor.java b/gateway-provider-security-jwt/src/main/java/org/apache/knox/gateway/provider/federation/jwt/deploy/JWTFederationContributor.java index c7c481d..b27ecc5 100644 --- a/gateway-provider-security-jwt/src/main/java/org/apache/knox/gateway/provider/federation/jwt/deploy/JWTFederationContributor.java +++ b/gateway-provider-security-jwt/src/main/java/org/apache/knox/gateway/provider/federation/jwt/deploy/JWTFederationContributor.java @@ -26,6 +26,7 @@ import org.apache.knox.gateway.topology.Service; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Map.Entry; @@ -56,7 +57,7 @@ public class JWTFederationContributor extends } Map<String, String> providerParams = provider.getParams(); for(Entry<String, String> entry : providerParams.entrySet()) { - params.add( resource.createFilterParam().name( entry.getKey().toLowerCase() ).value( entry.getValue() ) ); + params.add( resource.createFilterParam().name( entry.getKey().toLowerCase(Locale.ROOT) ).value( entry.getValue() ) ); } resource.addFilter().name( getName() ).role( getRole() ).impl( FILTER_CLASSNAME ).params( params ); } http://git-wip-us.apache.org/repos/asf/knox/blob/159bb800/gateway-provider-security-jwt/src/main/java/org/apache/knox/gateway/provider/federation/jwt/deploy/SSOCookieFederationContributor.java ---------------------------------------------------------------------- diff --git a/gateway-provider-security-jwt/src/main/java/org/apache/knox/gateway/provider/federation/jwt/deploy/SSOCookieFederationContributor.java b/gateway-provider-security-jwt/src/main/java/org/apache/knox/gateway/provider/federation/jwt/deploy/SSOCookieFederationContributor.java index b5757e6..ff89709 100644 --- a/gateway-provider-security-jwt/src/main/java/org/apache/knox/gateway/provider/federation/jwt/deploy/SSOCookieFederationContributor.java +++ b/gateway-provider-security-jwt/src/main/java/org/apache/knox/gateway/provider/federation/jwt/deploy/SSOCookieFederationContributor.java @@ -26,6 +26,7 @@ import org.apache.knox.gateway.topology.Service; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Map.Entry; @@ -56,7 +57,7 @@ public class SSOCookieFederationContributor extends } Map<String, String> providerParams = provider.getParams(); for(Entry<String, String> entry : providerParams.entrySet()) { - params.add( resource.createFilterParam().name( entry.getKey().toLowerCase() ).value( entry.getValue() ) ); + params.add( resource.createFilterParam().name( entry.getKey().toLowerCase(Locale.ROOT) ).value( entry.getValue() ) ); } // add the gatewaypath to the filter params in case a provider URL needs to be derived String path = context.getGatewayConfig().getGatewayPath(); http://git-wip-us.apache.org/repos/asf/knox/blob/159bb800/gateway-provider-security-jwt/src/main/java/org/apache/knox/gateway/provider/federation/jwt/filter/AccessTokenFederationFilter.java ---------------------------------------------------------------------- diff --git a/gateway-provider-security-jwt/src/main/java/org/apache/knox/gateway/provider/federation/jwt/filter/AccessTokenFederationFilter.java b/gateway-provider-security-jwt/src/main/java/org/apache/knox/gateway/provider/federation/jwt/filter/AccessTokenFederationFilter.java index fcfee38..1ead35d 100644 --- a/gateway-provider-security-jwt/src/main/java/org/apache/knox/gateway/provider/federation/jwt/filter/AccessTokenFederationFilter.java +++ b/gateway-provider-security-jwt/src/main/java/org/apache/knox/gateway/provider/federation/jwt/filter/AccessTokenFederationFilter.java @@ -17,13 +17,13 @@ */ package org.apache.knox.gateway.provider.federation.jwt.filter; -import java.io.IOException; -import java.security.Principal; -import java.security.PrivilegedActionException; -import java.security.PrivilegedExceptionAction; -import java.text.ParseException; -import java.util.HashSet; -import java.util.Set; +import org.apache.knox.gateway.i18n.messages.MessagesFactory; +import org.apache.knox.gateway.provider.federation.jwt.JWTMessages; +import org.apache.knox.gateway.security.PrimaryPrincipal; +import org.apache.knox.gateway.services.GatewayServices; +import org.apache.knox.gateway.services.security.token.JWTokenAuthority; +import org.apache.knox.gateway.services.security.token.TokenServiceException; +import org.apache.knox.gateway.services.security.token.impl.JWTToken; import javax.security.auth.Subject; import javax.servlet.Filter; @@ -34,14 +34,14 @@ import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; - -import org.apache.knox.gateway.i18n.messages.MessagesFactory; -import org.apache.knox.gateway.provider.federation.jwt.JWTMessages; -import org.apache.knox.gateway.security.PrimaryPrincipal; -import org.apache.knox.gateway.services.GatewayServices; -import org.apache.knox.gateway.services.security.token.JWTokenAuthority; -import org.apache.knox.gateway.services.security.token.TokenServiceException; -import org.apache.knox.gateway.services.security.token.impl.JWTToken; +import java.io.IOException; +import java.security.Principal; +import java.security.PrivilegedActionException; +import java.security.PrivilegedExceptionAction; +import java.text.ParseException; +import java.util.HashSet; +import java.util.Locale; +import java.util.Set; public class AccessTokenFederationFilter implements Filter { private static JWTMessages log = MessagesFactory.get( JWTMessages.class ); @@ -80,7 +80,7 @@ public class AccessTokenFederationFilter implements Filter { if (verified) { long expires = Long.parseLong(token.getExpires()); if (expires > System.currentTimeMillis()) { - if (((HttpServletRequest) request).getRequestURL().indexOf(token.getAudience().toLowerCase()) != -1) { + if (((HttpServletRequest) request).getRequestURL().indexOf(token.getAudience().toLowerCase(Locale.ROOT)) != -1) { Subject subject = createSubjectFromToken(token); continueWithEstablishedSecurityContext(subject, (HttpServletRequest)request, (HttpServletResponse)response, chain); } http://git-wip-us.apache.org/repos/asf/knox/blob/159bb800/gateway-provider-security-jwt/src/test/java/org/apache/knox/gateway/provider/federation/AbstractJWTFilterTest.java ---------------------------------------------------------------------- diff --git a/gateway-provider-security-jwt/src/test/java/org/apache/knox/gateway/provider/federation/AbstractJWTFilterTest.java b/gateway-provider-security-jwt/src/test/java/org/apache/knox/gateway/provider/federation/AbstractJWTFilterTest.java index f79a743..fb75163 100644 --- a/gateway-provider-security-jwt/src/test/java/org/apache/knox/gateway/provider/federation/AbstractJWTFilterTest.java +++ b/gateway-provider-security-jwt/src/test/java/org/apache/knox/gateway/provider/federation/AbstractJWTFilterTest.java @@ -17,10 +17,40 @@ */ package org.apache.knox.gateway.provider.federation; -import static org.junit.Assert.fail; +import com.nimbusds.jose.JWSAlgorithm; +import com.nimbusds.jose.JWSHeader; +import com.nimbusds.jose.JWSSigner; +import com.nimbusds.jose.JWSVerifier; +import com.nimbusds.jose.crypto.RSASSASigner; +import com.nimbusds.jose.crypto.RSASSAVerifier; +import com.nimbusds.jwt.JWTClaimsSet; +import com.nimbusds.jwt.SignedJWT; +import org.apache.commons.codec.binary.Base64; +import org.apache.knox.gateway.provider.federation.jwt.filter.AbstractJWTFilter; +import org.apache.knox.gateway.provider.federation.jwt.filter.SSOCookieFederationFilter; +import org.apache.knox.gateway.security.PrimaryPrincipal; +import org.apache.knox.gateway.services.security.impl.X509CertificateUtil; +import org.apache.knox.gateway.services.security.token.JWTokenAuthority; +import org.apache.knox.gateway.services.security.token.TokenServiceException; +import org.apache.knox.gateway.services.security.token.impl.JWT; +import org.easymock.EasyMock; +import org.junit.After; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; +import javax.security.auth.Subject; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.InetAddress; +import java.nio.charset.StandardCharsets; import java.security.AccessController; import java.security.KeyPair; import java.security.KeyPairGenerator; @@ -31,43 +61,15 @@ import java.security.cert.Certificate; import java.security.interfaces.RSAPrivateKey; import java.security.interfaces.RSAPublicKey; import java.text.MessageFormat; +import java.util.ArrayList; +import java.util.Date; import java.util.Enumeration; import java.util.List; -import java.util.ArrayList; +import java.util.Locale; import java.util.Properties; -import java.util.Date; import java.util.Set; -import javax.security.auth.Subject; -import javax.servlet.FilterChain; -import javax.servlet.FilterConfig; -import javax.servlet.ServletContext; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.commons.codec.binary.Base64; -import org.apache.knox.gateway.provider.federation.jwt.filter.AbstractJWTFilter; -import org.apache.knox.gateway.provider.federation.jwt.filter.SSOCookieFederationFilter; -import org.apache.knox.gateway.security.PrimaryPrincipal; -import org.apache.knox.gateway.services.security.impl.X509CertificateUtil; -import org.apache.knox.gateway.services.security.token.JWTokenAuthority; -import org.apache.knox.gateway.services.security.token.TokenServiceException; -import org.apache.knox.gateway.services.security.token.impl.JWT; -import org.apache.knox.gateway.services.security.token.impl.JWTToken; -import org.easymock.EasyMock; -import org.junit.After; -import org.junit.Assert; -import org.junit.BeforeClass; -import org.junit.Test; - -import com.nimbusds.jose.*; -import com.nimbusds.jwt.JWTClaimsSet; -import com.nimbusds.jwt.SignedJWT; -import com.nimbusds.jose.crypto.RSASSASigner; -import com.nimbusds.jose.crypto.RSASSAVerifier; +import static org.junit.Assert.fail; public abstract class AbstractJWTFilterTest { private static final String SERVICE_URL = "https://localhost:8888/resource"; @@ -84,7 +86,7 @@ public abstract class AbstractJWTFilterTest { protected abstract String getVerificationPemProperty(); private static String buildDistinguishedName(String hostname) { - MessageFormat headerFormatter = new MessageFormat(dnTemplate); + MessageFormat headerFormatter = new MessageFormat(dnTemplate, Locale.ROOT); String[] paramArray = new String[1]; paramArray[0] = hostname; String dn = headerFormatter.format(paramArray); @@ -99,8 +101,8 @@ public abstract class AbstractJWTFilterTest { String dn = buildDistinguishedName(InetAddress.getLocalHost().getHostName()); Certificate cert = X509CertificateUtil.generateCertificate(dn, KPair, 365, "SHA1withRSA"); byte[] data = cert.getEncoded(); - Base64 encoder = new Base64( 76, "\n".getBytes( "ASCII" ) ); - pem = new String(encoder.encodeToString( data ).getBytes( "ASCII" )).trim(); + Base64 encoder = new Base64( 76, "\n".getBytes( StandardCharsets.US_ASCII ) ); + pem = new String(encoder.encodeToString( data ).getBytes( StandardCharsets.US_ASCII ), StandardCharsets.US_ASCII).trim(); publicKey = (RSAPublicKey) KPair.getPublic(); privateKey = (RSAPrivateKey) KPair.getPrivate(); @@ -503,8 +505,8 @@ public abstract class AbstractJWTFilterTest { String dn = buildDistinguishedName(InetAddress.getLocalHost().getHostName()); Certificate cert = X509CertificateUtil.generateCertificate(dn, KPair, 365, "SHA1withRSA"); byte[] data = cert.getEncoded(); - Base64 encoder = new Base64( 76, "\n".getBytes( "ASCII" ) ); - String failingPem = new String(encoder.encodeToString( data ).getBytes( "ASCII" )).trim(); + Base64 encoder = new Base64( 76, "\n".getBytes( StandardCharsets.US_ASCII ) ); + String failingPem = new String(encoder.encodeToString( data ).getBytes( StandardCharsets.US_ASCII ), StandardCharsets.US_ASCII).trim(); props.put(getAudienceProperty(), "bar"); props.put(getVerificationPemProperty(), failingPem); http://git-wip-us.apache.org/repos/asf/knox/blob/159bb800/gateway-provider-security-preauth/src/main/java/org/apache/knox/gateway/preauth/deploy/HeaderPreAuthContributor.java ---------------------------------------------------------------------- diff --git a/gateway-provider-security-preauth/src/main/java/org/apache/knox/gateway/preauth/deploy/HeaderPreAuthContributor.java b/gateway-provider-security-preauth/src/main/java/org/apache/knox/gateway/preauth/deploy/HeaderPreAuthContributor.java index e9177e8..a931eb7 100644 --- a/gateway-provider-security-preauth/src/main/java/org/apache/knox/gateway/preauth/deploy/HeaderPreAuthContributor.java +++ b/gateway-provider-security-preauth/src/main/java/org/apache/knox/gateway/preauth/deploy/HeaderPreAuthContributor.java @@ -17,11 +17,6 @@ */ package org.apache.knox.gateway.preauth.deploy; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - import org.apache.knox.gateway.deploy.DeploymentContext; import org.apache.knox.gateway.deploy.ProviderDeploymentContributorBase; import org.apache.knox.gateway.descriptor.FilterParamDescriptor; @@ -29,6 +24,12 @@ import org.apache.knox.gateway.descriptor.ResourceDescriptor; import org.apache.knox.gateway.topology.Provider; import org.apache.knox.gateway.topology.Service; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Map.Entry; + public class HeaderPreAuthContributor extends ProviderDeploymentContributorBase { private static final String ROLE = "federation"; @@ -59,7 +60,7 @@ public class HeaderPreAuthContributor extends } Map<String, String> providerParams = provider.getParams(); for(Entry<String, String> entry : providerParams.entrySet()) { - params.add( resource.createFilterParam().name( entry.getKey().toLowerCase() ).value( entry.getValue() ) ); + params.add( resource.createFilterParam().name( entry.getKey().toLowerCase(Locale.ROOT) ).value( entry.getValue() ) ); } resource.addFilter().name( getName() ).role( getRole() ).impl( PREAUTH_FILTER_CLASSNAME ).params( params ); } http://git-wip-us.apache.org/repos/asf/knox/blob/159bb800/gateway-provider-security-preauth/src/main/java/org/apache/knox/gateway/preauth/filter/PreAuthService.java ---------------------------------------------------------------------- diff --git a/gateway-provider-security-preauth/src/main/java/org/apache/knox/gateway/preauth/filter/PreAuthService.java b/gateway-provider-security-preauth/src/main/java/org/apache/knox/gateway/preauth/filter/PreAuthService.java index 5c6e868..a60a6eb 100644 --- a/gateway-provider-security-preauth/src/main/java/org/apache/knox/gateway/preauth/filter/PreAuthService.java +++ b/gateway-provider-security-preauth/src/main/java/org/apache/knox/gateway/preauth/filter/PreAuthService.java @@ -24,13 +24,14 @@ import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import java.util.Collections; -import java.util.ServiceLoader; import java.util.Iterator; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Locale; import java.util.Map; +import java.util.ServiceLoader; +import java.util.Set; import java.util.concurrent.ConcurrentHashMap; /** @@ -81,7 +82,7 @@ public class PreAuthService { if (validatorMap.containsKey(vName)) { vList.add(validatorMap.get(vName)); } else { - throw new ServletException(String.format("Unable to find validator with name '%s'", validationMethods)); + throw new ServletException(String.format(Locale.ROOT, "Unable to find validator with name '%s'", validationMethods)); } } return vList; http://git-wip-us.apache.org/repos/asf/knox/blob/159bb800/gateway-provider-security-shiro/src/main/java/org/apache/knox/gateway/shirorealm/KnoxLdapRealm.java ---------------------------------------------------------------------- diff --git a/gateway-provider-security-shiro/src/main/java/org/apache/knox/gateway/shirorealm/KnoxLdapRealm.java b/gateway-provider-security-shiro/src/main/java/org/apache/knox/gateway/shirorealm/KnoxLdapRealm.java index 3978de4..f90d43f 100644 --- a/gateway-provider-security-shiro/src/main/java/org/apache/knox/gateway/shirorealm/KnoxLdapRealm.java +++ b/gateway-provider-security-shiro/src/main/java/org/apache/knox/gateway/shirorealm/KnoxLdapRealm.java @@ -19,35 +19,6 @@ package org.apache.knox.gateway.shirorealm; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.StringTokenizer; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import javax.naming.AuthenticationException; -import javax.naming.Context; -import javax.naming.NamingEnumeration; -import javax.naming.NamingException; -import javax.naming.PartialResultException; -import javax.naming.SizeLimitExceededException; -import javax.naming.directory.Attribute; -import javax.naming.directory.SearchControls; -import javax.naming.directory.SearchResult; -import javax.naming.ldap.Control; -import javax.naming.ldap.LdapContext; -import javax.naming.ldap.LdapName; -import javax.naming.ldap.PagedResultsControl; -import javax.naming.ldap.PagedResultsResponseControl; - import org.apache.knox.gateway.GatewayMessages; import org.apache.knox.gateway.audit.api.Action; import org.apache.knox.gateway.audit.api.ActionOutcome; @@ -76,6 +47,35 @@ import org.apache.shiro.subject.MutablePrincipalCollection; import org.apache.shiro.subject.PrincipalCollection; import org.apache.shiro.util.StringUtils; +import javax.naming.AuthenticationException; +import javax.naming.Context; +import javax.naming.NamingEnumeration; +import javax.naming.NamingException; +import javax.naming.PartialResultException; +import javax.naming.SizeLimitExceededException; +import javax.naming.directory.Attribute; +import javax.naming.directory.SearchControls; +import javax.naming.directory.SearchResult; +import javax.naming.ldap.Control; +import javax.naming.ldap.LdapContext; +import javax.naming.ldap.LdapName; +import javax.naming.ldap.PagedResultsControl; +import javax.naming.ldap.PagedResultsResponseControl; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Set; +import java.util.StringTokenizer; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + /** * Implementation of {@link org.apache.shiro.realm.ldap.JndiLdapRealm} that also * returns each user's groups. @@ -635,7 +635,7 @@ public class KnoxLdapRealm extends JndiLdapRealm { } public void setUserSearchScope( final String scope ) { - this.userSearchScope = ( scope == null ? null : scope.trim().toLowerCase() ); + this.userSearchScope = ( scope == null ? null : scope.trim().toLowerCase(Locale.ROOT) ); } private SearchControls getUserSearchControls() { @@ -698,9 +698,9 @@ public class KnoxLdapRealm extends JndiLdapRealm { String searchFilter = null; if ( userSearchFilter == null ) { if ( userSearchAttributeName == null ) { - searchFilter = String.format( "(objectclass=%1$s)", getUserObjectClass() ); + searchFilter = String.format( Locale.ROOT, "(objectclass=%1$s)", getUserObjectClass() ); } else { - searchFilter = String.format( + searchFilter = String.format( Locale.ROOT, "(&(objectclass=%1$s)(%2$s=%3$s))", getUserObjectClass(), userSearchAttributeName, http://git-wip-us.apache.org/repos/asf/knox/blob/159bb800/gateway-provider-security-webappsec/src/main/java/org/apache/knox/gateway/webappsec/deploy/WebAppSecContributor.java ---------------------------------------------------------------------- diff --git a/gateway-provider-security-webappsec/src/main/java/org/apache/knox/gateway/webappsec/deploy/WebAppSecContributor.java b/gateway-provider-security-webappsec/src/main/java/org/apache/knox/gateway/webappsec/deploy/WebAppSecContributor.java index ed5e98d..a1d15d9 100644 --- a/gateway-provider-security-webappsec/src/main/java/org/apache/knox/gateway/webappsec/deploy/WebAppSecContributor.java +++ b/gateway-provider-security-webappsec/src/main/java/org/apache/knox/gateway/webappsec/deploy/WebAppSecContributor.java @@ -17,11 +17,6 @@ */ package org.apache.knox.gateway.webappsec.deploy; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - import org.apache.knox.gateway.deploy.DeploymentContext; import org.apache.knox.gateway.deploy.ProviderDeploymentContributorBase; import org.apache.knox.gateway.descriptor.FilterParamDescriptor; @@ -29,6 +24,12 @@ import org.apache.knox.gateway.descriptor.ResourceDescriptor; import org.apache.knox.gateway.topology.Provider; import org.apache.knox.gateway.topology.Service; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Map.Entry; + public class WebAppSecContributor extends ProviderDeploymentContributorBase { private static final String ROLE = "webappsec"; private static final String NAME = "WebAppSec"; @@ -153,7 +154,7 @@ public class WebAppSecContributor extends ProviderDeploymentContributorBase { List<FilterParamDescriptor> params, String prefix) { for(Entry<String, String> entry : providerParams.entrySet()) { if (entry.getKey().startsWith(prefix)) { - params.add(resource.createFilterParam().name(entry.getKey().toLowerCase()).value(entry.getValue())); + params.add(resource.createFilterParam().name(entry.getKey().toLowerCase(Locale.ROOT)).value(entry.getValue())); } } } http://git-wip-us.apache.org/repos/asf/knox/blob/159bb800/gateway-server-xforwarded-filter/src/main/java/org/apache/knox/gateway/filter/XForwardedHeaderRequestWrapper.java ---------------------------------------------------------------------- diff --git a/gateway-server-xforwarded-filter/src/main/java/org/apache/knox/gateway/filter/XForwardedHeaderRequestWrapper.java b/gateway-server-xforwarded-filter/src/main/java/org/apache/knox/gateway/filter/XForwardedHeaderRequestWrapper.java index f2e051e..3944ce8 100644 --- a/gateway-server-xforwarded-filter/src/main/java/org/apache/knox/gateway/filter/XForwardedHeaderRequestWrapper.java +++ b/gateway-server-xforwarded-filter/src/main/java/org/apache/knox/gateway/filter/XForwardedHeaderRequestWrapper.java @@ -23,21 +23,22 @@ import java.util.Arrays; import java.util.Collections; import java.util.Enumeration; import java.util.Hashtable; +import java.util.Locale; public class XForwardedHeaderRequestWrapper extends GatewayRequestWrapper { private static final String X_FORWARDED_FOR = "X-Forwarded-For"; - private static final String X_FORWARDED_FOR_LOWER = X_FORWARDED_FOR.toLowerCase(); + private static final String X_FORWARDED_FOR_LOWER = X_FORWARDED_FOR.toLowerCase(Locale.ROOT); private static final String X_FORWARDED_PROTO = "X-Forwarded-Proto"; - private static final String X_FORWARDED_PROTO_LOWER = X_FORWARDED_PROTO.toLowerCase(); + private static final String X_FORWARDED_PROTO_LOWER = X_FORWARDED_PROTO.toLowerCase(Locale.ROOT); private static final String X_FORWARDED_PORT = "X-Forwarded-Port"; - private static final String X_FORWARDED_PORT_LOWER = X_FORWARDED_PORT.toLowerCase(); + private static final String X_FORWARDED_PORT_LOWER = X_FORWARDED_PORT.toLowerCase(Locale.ROOT); private static final String X_FORWARDED_HOST = "X-Forwarded-Host"; - private static final String X_FORWARDED_HOST_LOWER = X_FORWARDED_HOST.toLowerCase(); + private static final String X_FORWARDED_HOST_LOWER = X_FORWARDED_HOST.toLowerCase(Locale.ROOT); private static final String X_FORWARDED_SERVER = "X-Forwarded-Server"; - private static final String X_FORWARDED_SERVER_LOWER = X_FORWARDED_SERVER.toLowerCase(); + private static final String X_FORWARDED_SERVER_LOWER = X_FORWARDED_SERVER.toLowerCase(Locale.ROOT); private static final String X_FORWARDED_CONTEXT = "X-Forwarded-Context"; - private static final String X_FORWARDED_CONTEXT_LOWER = X_FORWARDED_CONTEXT.toLowerCase(); + private static final String X_FORWARDED_CONTEXT_LOWER = X_FORWARDED_CONTEXT.toLowerCase(Locale.ROOT); private static final ArrayList<String> headerNames = new ArrayList<>(); static { @@ -68,7 +69,7 @@ public class XForwardedHeaderRequestWrapper extends GatewayRequestWrapper { @Override public Enumeration<String> getHeaders( String name ) { - name = name.toLowerCase(); + name = name.toLowerCase(Locale.ROOT); Enumeration<String> values; String value = proxyHeaders.get( name ); if( value != null ) { @@ -81,7 +82,7 @@ public class XForwardedHeaderRequestWrapper extends GatewayRequestWrapper { @Override public String getHeader( String name ) { - name = name.toLowerCase(); + name = name.toLowerCase(Locale.ROOT); String value = proxyHeaders.get( name ); if( value == null ) { value = super.getHeader( name );
