use of org.apache.knox.gateway.services.security.impl.DefaultCryptoService in project knox by apache.
the class CLIGatewayServices method init.
public void init(GatewayConfig config, Map<String, String> options) throws ServiceLifecycleException {
ms = new CLIMasterService();
ms.init(config, options);
services.put("MasterService", ms);
ks = new DefaultKeystoreService();
ks.setMasterService(ms);
ks.init(config, options);
services.put(KEYSTORE_SERVICE, ks);
DefaultAliasService alias = new DefaultAliasService();
alias.setKeystoreService(ks);
alias.init(config, options);
services.put(ALIAS_SERVICE, alias);
DefaultCryptoService crypto = new DefaultCryptoService();
crypto.setKeystoreService(ks);
crypto.setAliasService(alias);
crypto.init(config, options);
services.put(CRYPTO_SERVICE, crypto);
DefaultTopologyService tops = new DefaultTopologyService();
tops.init(config, options);
services.put(TOPOLOGY_SERVICE, tops);
RemoteConfigurationRegistryClientService registryClientService = RemoteConfigurationRegistryClientServiceFactory.newInstance(config);
registryClientService.setAliasService(alias);
registryClientService.init(config, options);
services.put(REMOTE_REGISTRY_CLIENT_SERVICE, registryClientService);
}
use of org.apache.knox.gateway.services.security.impl.DefaultCryptoService in project knox by apache.
the class EncryptDecryptUriProcessorTest method testEncryptDecrypt.
@Test
public void testEncryptDecrypt() throws Exception {
String encryptedValueParamName = "address";
String clusterName = "test-cluster-name";
String passwordAlias = "encryptQueryString";
// Test encryption. Result is in encryptedAdrress
AliasService as = EasyMock.createNiceMock(AliasService.class);
String secret = "asdf";
EasyMock.expect(as.getPasswordFromAliasForCluster(clusterName, passwordAlias)).andReturn(secret.toCharArray()).anyTimes();
CryptoService cryptoService = new DefaultCryptoService();
((DefaultCryptoService) cryptoService).setAliasService(as);
GatewayServices gatewayServices = EasyMock.createNiceMock(GatewayServices.class);
EasyMock.expect(gatewayServices.getService(GatewayServices.CRYPTO_SERVICE)).andReturn(cryptoService);
UrlRewriteEnvironment encEnvironment = EasyMock.createNiceMock(UrlRewriteEnvironment.class);
EasyMock.expect(encEnvironment.getAttribute(GatewayServices.GATEWAY_SERVICES_ATTRIBUTE)).andReturn(gatewayServices).anyTimes();
EasyMock.expect(encEnvironment.getAttribute(GatewayServices.GATEWAY_CLUSTER_ATTRIBUTE)).andReturn(clusterName).anyTimes();
UrlRewriteContext encContext = EasyMock.createNiceMock(UrlRewriteContext.class);
EncryptStepContextParams hostPortParams = new EncryptStepContextParams();
hostPortParams.addParam("host", Arrays.asList("host.yarn.com"));
hostPortParams.addParam("port", Arrays.asList("8088"));
EasyMock.expect(encContext.getParameters()).andReturn(hostPortParams);
Capture<EncryptStepContextParams> encodedValue = new Capture<EncryptStepContextParams>();
encContext.addParameters(EasyMock.capture(encodedValue));
EasyMock.replay(gatewayServices, as, encEnvironment, encContext);
EncryptUriDescriptor descriptor = new EncryptUriDescriptor();
descriptor.setTemplate("{host}:{port}");
descriptor.setParam(encryptedValueParamName);
EncryptUriProcessor processor = new EncryptUriProcessor();
processor.initialize(encEnvironment, descriptor);
UrlRewriteStepStatus encStatus = processor.process(encContext);
assertThat(encStatus, is(UrlRewriteStepStatus.SUCCESS));
assertThat(encodedValue.getValue(), notNullValue());
assertThat(encodedValue.getValue().resolve(encryptedValueParamName).size(), is(1));
String encryptedAdrress = encodedValue.getValue().resolve(encryptedValueParamName).get(0);
assertThat(encryptedAdrress, not(isEmptyOrNullString()));
assertThat(encryptedAdrress, not("{host}:{port}"));
assertThat(encryptedAdrress, not("hdp:8088"));
// Test decryption. Result is in dectryptedAdrress.
String decParam = "foo";
gatewayServices = EasyMock.createNiceMock(GatewayServices.class);
EasyMock.expect(gatewayServices.getService(GatewayServices.CRYPTO_SERVICE)).andReturn(cryptoService);
as = EasyMock.createNiceMock(AliasService.class);
EasyMock.expect(as.getPasswordFromAliasForCluster(clusterName, passwordAlias)).andReturn(secret.toCharArray()).anyTimes();
UrlRewriteEnvironment decEnvironment = EasyMock.createNiceMock(UrlRewriteEnvironment.class);
EasyMock.expect(decEnvironment.getAttribute(GatewayServices.GATEWAY_SERVICES_ATTRIBUTE)).andReturn(gatewayServices).anyTimes();
EasyMock.expect(decEnvironment.getAttribute(GatewayServices.GATEWAY_CLUSTER_ATTRIBUTE)).andReturn(clusterName).anyTimes();
UrlRewriteContext decContext = EasyMock.createNiceMock(UrlRewriteContext.class);
EncryptStepContextParams encryptedParams = new EncryptStepContextParams();
// Value was encrypted by EncryptUriProcessor
encryptedParams.addParam(decParam, Arrays.asList(encryptedAdrress));
encryptedParams.addParam("foo1", Arrays.asList("test"));
EasyMock.expect(decContext.getParameters()).andReturn(encryptedParams);
Capture<EncryptStepContextParams> decodedValue = new Capture<EncryptStepContextParams>();
decContext.addParameters(EasyMock.capture(decodedValue));
EasyMock.replay(gatewayServices, as, decEnvironment, decContext);
DecryptUriDescriptor decDescriptor = new DecryptUriDescriptor();
decDescriptor.setParam(decParam);
DecryptUriProcessor decProcessor = new DecryptUriProcessor();
decProcessor.initialize(decEnvironment, decDescriptor);
UrlRewriteStepStatus decStatus = decProcessor.process(decContext);
assertThat(decStatus, is(UrlRewriteStepStatus.SUCCESS));
assertThat(decodedValue.getValue(), notNullValue());
assertThat(decodedValue.getValue().resolve(decParam).size(), is(1));
String dectryptedAdrress = decodedValue.getValue().resolve(decParam).get(0);
assertThat(dectryptedAdrress, is("host.yarn.com:8088"));
}
use of org.apache.knox.gateway.services.security.impl.DefaultCryptoService in project knox by apache.
the class SecureQueryEncodeProcessorTest method testSimpleQueryEncoding.
@Test
public void testSimpleQueryEncoding() throws Exception {
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);
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();
Template inTemplate = Parser.parseLiteral("http://host:0/root/path?query");
UrlRewriteContext context = EasyMock.createNiceMock(UrlRewriteContext.class);
EasyMock.expect(context.getCurrentUrl()).andReturn(inTemplate);
Capture<Template> outTemplate = new Capture<Template>();
context.setCurrentUrl(EasyMock.capture(outTemplate));
EasyMock.replay(environment, context);
SecureQueryEncodeDescriptor descriptor = new SecureQueryEncodeDescriptor();
SecureQueryEncodeProcessor processor = new SecureQueryEncodeProcessor();
processor.initialize(environment, descriptor);
processor.process(context);
BASE64Encoder encoder = new BASE64Encoder();
String encQuery = encoder.encode("query".getBytes("utf-8"));
encQuery = encQuery.replaceAll("\\=", "");
String outExpect = "http://host:0/root/path?_=" + encQuery;
String outActual = outTemplate.getValue().toString();
assertThat(outActual, is(outExpect));
}
use of org.apache.knox.gateway.services.security.impl.DefaultCryptoService in project knox by apache.
the class SecureQueryEncryptDecryptProcessorTest method testEncryptBadDecrypt.
@Test
public void testEncryptBadDecrypt() throws Exception {
Query query;
Template origTemplate = Parser.parseLiteral("http://host:0/path/file?query-param-name=query-param-value");
// Test encryption. Results are left in encTemplate
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);
GatewayServices gatewayServices = EasyMock.createNiceMock(GatewayServices.class);
EasyMock.expect(gatewayServices.getService(GatewayServices.CRYPTO_SERVICE)).andReturn(cryptoService);
UrlRewriteEnvironment encEnvironment = EasyMock.createNiceMock(UrlRewriteEnvironment.class);
EasyMock.expect(encEnvironment.getAttribute(GatewayServices.GATEWAY_SERVICES_ATTRIBUTE)).andReturn(gatewayServices).anyTimes();
EasyMock.expect(encEnvironment.getAttribute(GatewayServices.GATEWAY_CLUSTER_ATTRIBUTE)).andReturn("test-cluster-name").anyTimes();
UrlRewriteContext encContext = EasyMock.createNiceMock(UrlRewriteContext.class);
EasyMock.expect(encContext.getCurrentUrl()).andReturn(origTemplate);
Capture<Template> encTemplate = new Capture<Template>();
encContext.setCurrentUrl(EasyMock.capture(encTemplate));
EasyMock.replay(gatewayServices, as, encEnvironment, encContext);
SecureQueryEncryptDescriptor descriptor = new SecureQueryEncryptDescriptor();
SecureQueryEncryptProcessor processor = new SecureQueryEncryptProcessor();
processor.initialize(encEnvironment, descriptor);
processor.process(encContext);
assertThat(encTemplate, notNullValue());
query = encTemplate.getValue().getQuery().get("_");
assertThat(query.getFirstValue().getPattern().length(), greaterThan(1));
query = encTemplate.getValue().getQuery().get("query-param-name");
assertThat(query, nullValue());
// Test decryption with decode returning null
gatewayServices = EasyMock.createNiceMock(GatewayServices.class);
EasyMock.expect(gatewayServices.getService(GatewayServices.CRYPTO_SERVICE)).andReturn(cryptoService);
as = EasyMock.createNiceMock(AliasService.class);
EasyMock.expect(as.getPasswordFromAliasForCluster("test-cluster-name", "encryptQueryString")).andReturn(secret.toCharArray()).anyTimes();
UrlRewriteEnvironment decEnvironment = EasyMock.createNiceMock(UrlRewriteEnvironment.class);
EasyMock.expect(decEnvironment.getAttribute(GatewayServices.GATEWAY_SERVICES_ATTRIBUTE)).andReturn(gatewayServices).anyTimes();
EasyMock.expect(decEnvironment.getAttribute(GatewayServices.GATEWAY_CLUSTER_ATTRIBUTE)).andReturn("test-cluster-name").anyTimes();
Params decParams = EasyMock.createNiceMock(Params.class);
EasyMock.expect(decParams.resolve(GatewayServices.GATEWAY_CLUSTER_ATTRIBUTE)).andReturn(Arrays.asList("test-cluster-name")).anyTimes();
UrlRewriteContext decContext = EasyMock.createNiceMock(UrlRewriteContext.class);
EasyMock.expect(decContext.getCurrentUrl()).andReturn(encTemplate.getValue());
EasyMock.expect(decContext.getParameters()).andReturn(decParams);
Capture<Template> decTemplate = new Capture<Template>();
decContext.setCurrentUrl(EasyMock.capture(decTemplate));
SecureQueryDecryptDescriptor descriptor1 = new SecureQueryDecryptDescriptor();
SecureQueryDecryptProcessor decProcessor = EasyMock.createMockBuilder(SecureQueryDecryptProcessor.class).addMockedMethod(SecureQueryDecryptProcessor.class.getDeclaredMethod("decode", String.class)).createMock();
EasyMock.expect(decProcessor.decode(EasyMock.anyObject(String.class))).andReturn(null);
EasyMock.replay(gatewayServices, as, decEnvironment, decParams, decContext, decProcessor);
decProcessor.initialize(decEnvironment, descriptor1);
UrlRewriteStepStatus status = decProcessor.process(decContext);
Assert.assertTrue((status == UrlRewriteStepStatus.FAILURE));
}
use of org.apache.knox.gateway.services.security.impl.DefaultCryptoService in project knox by apache.
the class SecureQueryEncryptDecryptProcessorTest method testEncryptDecrypt.
@Test
public void testEncryptDecrypt() throws Exception {
Query query;
Template origTemplate = Parser.parseLiteral("http://host:0/path/file?query-param-name=query-param-value");
// Test encryption. Results are left in encTemplate
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);
GatewayServices gatewayServices = EasyMock.createNiceMock(GatewayServices.class);
EasyMock.expect(gatewayServices.getService(GatewayServices.CRYPTO_SERVICE)).andReturn(cryptoService);
UrlRewriteEnvironment encEnvironment = EasyMock.createNiceMock(UrlRewriteEnvironment.class);
EasyMock.expect(encEnvironment.getAttribute(GatewayServices.GATEWAY_SERVICES_ATTRIBUTE)).andReturn(gatewayServices).anyTimes();
EasyMock.expect(encEnvironment.getAttribute(GatewayServices.GATEWAY_CLUSTER_ATTRIBUTE)).andReturn("test-cluster-name").anyTimes();
UrlRewriteContext encContext = EasyMock.createNiceMock(UrlRewriteContext.class);
EasyMock.expect(encContext.getCurrentUrl()).andReturn(origTemplate);
Capture<Template> encTemplate = new Capture<Template>();
encContext.setCurrentUrl(EasyMock.capture(encTemplate));
EasyMock.replay(gatewayServices, as, encEnvironment, encContext);
SecureQueryEncryptDescriptor descriptor = new SecureQueryEncryptDescriptor();
SecureQueryEncryptProcessor processor = new SecureQueryEncryptProcessor();
processor.initialize(encEnvironment, descriptor);
processor.process(encContext);
assertThat(encTemplate, notNullValue());
query = encTemplate.getValue().getQuery().get("_");
assertThat(query.getFirstValue().getPattern().length(), greaterThan(1));
query = encTemplate.getValue().getQuery().get("query-param-name");
assertThat(query, nullValue());
// Test decryption. Results are left in decTemplate.
gatewayServices = EasyMock.createNiceMock(GatewayServices.class);
EasyMock.expect(gatewayServices.getService(GatewayServices.CRYPTO_SERVICE)).andReturn(cryptoService);
as = EasyMock.createNiceMock(AliasService.class);
EasyMock.expect(as.getPasswordFromAliasForCluster("test-cluster-name", "encryptQueryString")).andReturn(secret.toCharArray()).anyTimes();
UrlRewriteEnvironment decEnvironment = EasyMock.createNiceMock(UrlRewriteEnvironment.class);
EasyMock.expect(decEnvironment.getAttribute(GatewayServices.GATEWAY_SERVICES_ATTRIBUTE)).andReturn(gatewayServices).anyTimes();
EasyMock.expect(decEnvironment.getAttribute(GatewayServices.GATEWAY_CLUSTER_ATTRIBUTE)).andReturn("test-cluster-name").anyTimes();
Params decParams = EasyMock.createNiceMock(Params.class);
EasyMock.expect(decParams.resolve(GatewayServices.GATEWAY_CLUSTER_ATTRIBUTE)).andReturn(Arrays.asList("test-cluster-name")).anyTimes();
UrlRewriteContext decContext = EasyMock.createNiceMock(UrlRewriteContext.class);
EasyMock.expect(decContext.getCurrentUrl()).andReturn(encTemplate.getValue());
EasyMock.expect(decContext.getParameters()).andReturn(decParams);
Capture<Template> decTemplate = new Capture<Template>();
decContext.setCurrentUrl(EasyMock.capture(decTemplate));
EasyMock.replay(gatewayServices, as, decEnvironment, decParams, decContext);
SecureQueryDecryptDescriptor descriptor1 = new SecureQueryDecryptDescriptor();
SecureQueryDecryptProcessor decProcessor = new SecureQueryDecryptProcessor();
decProcessor.initialize(decEnvironment, descriptor1);
decProcessor.process(decContext);
assertThat(decTemplate, notNullValue());
assertThat(decTemplate.getValue(), notNullValue());
query = decTemplate.getValue().getQuery().get("query-param-name");
assertThat(query.getFirstValue().getPattern(), is("query-param-value"));
query = decTemplate.getValue().getQuery().get("_");
assertThat(query, nullValue());
}
Aggregations