You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by dh...@apache.org on 2014/10/24 23:43:40 UTC

[1/5] git commit: CAMEL-7955: Updated Camel-linkedin to use SSLContextParameters to configure HtmlUnit for OAuth

Repository: camel
Updated Branches:
  refs/heads/master 007403ac4 -> bc5bfe46a


CAMEL-7955: Updated Camel-linkedin to use SSLContextParameters to configure HtmlUnit for OAuth


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/3db68c5a
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/3db68c5a
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/3db68c5a

Branch: refs/heads/master
Commit: 3db68c5af3567191e3f0cf632f19e79628de2c3c
Parents: 608c99c
Author: Dhiraj Bokde <dh...@yahoo.com>
Authored: Fri Oct 24 13:27:09 2014 -0700
Committer: Dhiraj Bokde <dh...@yahoo.com>
Committed: Fri Oct 24 14:43:15 2014 -0700

----------------------------------------------------------------------
 .../linkedin/api/LinkedInOAuthRequestFilter.java  |  4 +++-
 .../api/AbstractResourceIntegrationTest.java      |  4 ++--
 .../component/linkedin/LinkedInComponent.java     | 18 +++++++++++++++++-
 3 files changed, 22 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/3db68c5a/components/camel-linkedin/camel-linkedin-api/src/main/java/org/apache/camel/component/linkedin/api/LinkedInOAuthRequestFilter.java
----------------------------------------------------------------------
diff --git a/components/camel-linkedin/camel-linkedin-api/src/main/java/org/apache/camel/component/linkedin/api/LinkedInOAuthRequestFilter.java b/components/camel-linkedin/camel-linkedin-api/src/main/java/org/apache/camel/component/linkedin/api/LinkedInOAuthRequestFilter.java
index 4fd7194..ed11944 100644
--- a/components/camel-linkedin/camel-linkedin-api/src/main/java/org/apache/camel/component/linkedin/api/LinkedInOAuthRequestFilter.java
+++ b/components/camel-linkedin/camel-linkedin-api/src/main/java/org/apache/camel/component/linkedin/api/LinkedInOAuthRequestFilter.java
@@ -47,6 +47,7 @@ import com.gargoylesoftware.htmlunit.html.HtmlPage;
 import com.gargoylesoftware.htmlunit.html.HtmlPasswordInput;
 import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
 import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+
 import org.apache.http.HttpHost;
 import org.apache.http.HttpStatus;
 import org.apache.http.conn.params.ConnRoutePNames;
@@ -82,7 +83,7 @@ public final class LinkedInOAuthRequestFilter implements ClientRequestFilter {
 
     @SuppressWarnings("deprecation")
     public LinkedInOAuthRequestFilter(OAuthParams oAuthParams, Map<String, Object> httpParams,
-                                      boolean lazyAuth) {
+                                      boolean lazyAuth, String[] enabledProtocols) {
 
         this.oAuthParams = oAuthParams;
         this.oAuthToken = null;
@@ -95,6 +96,7 @@ public final class LinkedInOAuthRequestFilter implements ClientRequestFilter {
         options.setThrowExceptionOnFailingStatusCode(true);
         options.setThrowExceptionOnScriptError(true);
         options.setPrintContentOnFailingStatusCode(LOG.isDebugEnabled());
+        options.setSSLClientProtocols(enabledProtocols);
 
         // add HTTP proxy if set
         if (httpParams != null && httpParams.get(ConnRoutePNames.DEFAULT_PROXY) != null) {

http://git-wip-us.apache.org/repos/asf/camel/blob/3db68c5a/components/camel-linkedin/camel-linkedin-api/src/test/java/org/apache/camel/component/linkedin/api/AbstractResourceIntegrationTest.java
----------------------------------------------------------------------
diff --git a/components/camel-linkedin/camel-linkedin-api/src/test/java/org/apache/camel/component/linkedin/api/AbstractResourceIntegrationTest.java b/components/camel-linkedin/camel-linkedin-api/src/test/java/org/apache/camel/component/linkedin/api/AbstractResourceIntegrationTest.java
index d8f474e..b0f3ad8 100644
--- a/components/camel-linkedin/camel-linkedin-api/src/test/java/org/apache/camel/component/linkedin/api/AbstractResourceIntegrationTest.java
+++ b/components/camel-linkedin/camel-linkedin-api/src/test/java/org/apache/camel/component/linkedin/api/AbstractResourceIntegrationTest.java
@@ -48,7 +48,7 @@ public class AbstractResourceIntegrationTest extends Assert {
     @BeforeClass
     public static void beforeClass() throws Exception {
         properties = new Properties();
-        properties.load(PeopleResourceIntegrationTest.class.getResourceAsStream("/test-options.properties"));
+        properties.load(AbstractResourceIntegrationTest.class.getResourceAsStream("/test-options.properties"));
 
         requestFilter = createOAuthHelper();
     }
@@ -82,7 +82,7 @@ public class AbstractResourceIntegrationTest extends Assert {
 
         final OAuthParams oAuthParams = new OAuthParams(userName, userPassword, secureStorage,
             clientId, clientSecret, redirectUri, scopes);
-        return new LinkedInOAuthRequestFilter(oAuthParams, null, false);
+        return new LinkedInOAuthRequestFilter(oAuthParams, null, false, null);
     }
 
     @AfterClass

http://git-wip-us.apache.org/repos/asf/camel/blob/3db68c5a/components/camel-linkedin/camel-linkedin-component/src/main/java/org/apache/camel/component/linkedin/LinkedInComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-linkedin/camel-linkedin-component/src/main/java/org/apache/camel/component/linkedin/LinkedInComponent.java b/components/camel-linkedin/camel-linkedin-component/src/main/java/org/apache/camel/component/linkedin/LinkedInComponent.java
index 4434f8c..a45a300 100644
--- a/components/camel-linkedin/camel-linkedin-component/src/main/java/org/apache/camel/component/linkedin/LinkedInComponent.java
+++ b/components/camel-linkedin/camel-linkedin-component/src/main/java/org/apache/camel/component/linkedin/LinkedInComponent.java
@@ -16,6 +16,10 @@
  */
 package org.apache.camel.component.linkedin;
 
+import java.io.IOException;
+import java.security.GeneralSecurityException;
+import javax.net.ssl.SSLContext;
+
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.linkedin.api.LinkedInOAuthRequestFilter;
@@ -24,7 +28,9 @@ import org.apache.camel.component.linkedin.internal.CachingOAuthSecureStorage;
 import org.apache.camel.component.linkedin.internal.LinkedInApiCollection;
 import org.apache.camel.component.linkedin.internal.LinkedInApiName;
 import org.apache.camel.spi.UriEndpoint;
+import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.component.AbstractApiComponent;
+import org.apache.camel.util.jsse.SSLContextParameters;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -72,8 +78,18 @@ public class LinkedInComponent extends AbstractApiComponent<LinkedInApiName, Lin
         // validate configuration
         configuration.validate();
 
+        final String[] enabledProtocols;
+        try {
+            // use default SSP to create supported non-SSL protocols list
+            final SSLContext sslContext = new SSLContextParameters().createSSLContext();
+            enabledProtocols = sslContext.createSSLEngine().getEnabledProtocols();
+        } catch (GeneralSecurityException e) {
+            throw ObjectHelper.wrapRuntimeCamelException(e);
+        } catch (IOException e) {
+            throw ObjectHelper.wrapRuntimeCamelException(e);
+        }
         return new LinkedInOAuthRequestFilter(getOAuthParams(configuration),
-            configuration.getHttpParams(), configuration.isLazyAuth());
+            configuration.getHttpParams(), configuration.isLazyAuth(), enabledProtocols);
     }
 
     private static OAuthParams getOAuthParams(LinkedInConfiguration configuration) {


[2/5] git commit: CAMEL-7956: Updated Camel-salesforce to support SSLContextParameters to configure HttpClient

Posted by dh...@apache.org.
CAMEL-7956: Updated Camel-salesforce to support SSLContextParameters to configure HttpClient


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/608c99c5
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/608c99c5
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/608c99c5

Branch: refs/heads/master
Commit: 608c99c5b88f86bcb2a42dd81454605cc075e485
Parents: 007403a
Author: Dhiraj Bokde <dh...@yahoo.com>
Authored: Fri Oct 24 13:21:07 2014 -0700
Committer: Dhiraj Bokde <dh...@yahoo.com>
Committed: Fri Oct 24 14:43:15 2014 -0700

----------------------------------------------------------------------
 .../component/salesforce/SalesforceComponent.java | 18 +++++++++++++++++-
 .../internal/SessionIntegrationTest.java          |  6 +++++-
 2 files changed, 22 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/608c99c5/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceComponent.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceComponent.java
index 52dafa5..8a38bec 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceComponent.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceComponent.java
@@ -41,8 +41,10 @@ import org.apache.camel.spi.EndpointCompleter;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.ReflectionHelper;
 import org.apache.camel.util.ServiceHelper;
+import org.apache.camel.util.jsse.SSLContextParameters;
 import org.eclipse.jetty.client.HttpClient;
 import org.eclipse.jetty.client.RedirectListener;
+import org.eclipse.jetty.util.ssl.SslContextFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -60,6 +62,8 @@ public class SalesforceComponent extends UriEndpointComponent implements Endpoin
 
     private SalesforceLoginConfig loginConfig;
     private SalesforceEndpointConfig config;
+
+    private SSLContextParameters sslContextParameters;
     private String[] packages;
 
     // component state
@@ -136,7 +140,11 @@ public class SalesforceComponent extends UriEndpointComponent implements Endpoin
             if (config != null && config.getHttpClient() != null) {
                 httpClient = config.getHttpClient();
             } else {
-                httpClient = new HttpClient();
+                final SslContextFactory sslContextFactory = new SslContextFactory();
+                final SSLContextParameters contextParameters =
+                    sslContextParameters != null ? sslContextParameters : new SSLContextParameters();
+                sslContextFactory.setSslContext(contextParameters.createSSLContext());
+                httpClient = new HttpClient(sslContextFactory);
                 httpClient.setConnectorType(HttpClient.CONNECTOR_SELECT_CHANNEL);
                 httpClient.setMaxConnectionsPerAddress(MAX_CONNECTIONS_PER_ADDRESS);
                 httpClient.setConnectTimeout(CONNECTION_TIMEOUT);
@@ -303,6 +311,14 @@ public class SalesforceComponent extends UriEndpointComponent implements Endpoin
         this.config = config;
     }
 
+    public SSLContextParameters getSslContextParameters() {
+        return sslContextParameters;
+    }
+
+    public void setSslContextParameters(SSLContextParameters sslContextParameters) {
+        this.sslContextParameters = sslContextParameters;
+    }
+
     public String[] getPackages() {
         return packages;
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/608c99c5/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/SessionIntegrationTest.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/SessionIntegrationTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/SessionIntegrationTest.java
index ce55033..a25ad52 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/SessionIntegrationTest.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/SessionIntegrationTest.java
@@ -17,8 +17,10 @@
 package org.apache.camel.component.salesforce.internal;
 
 import org.apache.camel.component.salesforce.LoginConfigHelper;
+import org.apache.camel.util.jsse.SSLContextParameters;
 import org.eclipse.jetty.client.HttpClient;
 import org.eclipse.jetty.client.RedirectListener;
+import org.eclipse.jetty.util.ssl.SslContextFactory;
 import org.junit.Assert;
 import org.junit.Test;
 import org.slf4j.Logger;
@@ -37,7 +39,9 @@ public class SessionIntegrationTest extends Assert implements SalesforceSession.
     @Test
     public void testLogin() throws Exception {
 
-        final HttpClient httpClient = new HttpClient();
+        final SslContextFactory sslContextFactory = new SslContextFactory();
+        sslContextFactory.setSslContext(new SSLContextParameters().createSSLContext());
+        final HttpClient httpClient = new HttpClient(sslContextFactory);
         httpClient.setConnectTimeout(TIMEOUT);
         httpClient.setTimeout(TIMEOUT);
         httpClient.registerListener(RedirectListener.class.getName());


[4/5] git commit: CAMEL-7933: Updated Camel-apns to use SSLContextParameters

Posted by dh...@apache.org.
CAMEL-7933: Updated Camel-apns to use SSLContextParameters


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/b4573e34
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/b4573e34
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/b4573e34

Branch: refs/heads/master
Commit: b4573e34b02bb936eca7edb26df0415e4f4c1cde
Parents: d06f3af
Author: Dhiraj Bokde <dh...@yahoo.com>
Authored: Fri Oct 24 13:36:01 2014 -0700
Committer: Dhiraj Bokde <dh...@yahoo.com>
Committed: Fri Oct 24 14:43:16 2014 -0700

----------------------------------------------------------------------
 .../apns/factory/ApnsServiceFactory.java        | 21 ++++---
 .../apns/factory/ApnsServiceFactoryTest.java    |  2 +-
 .../ConfiguredApnsServiceFactoryTest.java       |  5 +-
 .../camel/component/apns/util/ApnsUtils.java    | 60 +++++++++++++-------
 .../spring/SpringApnsConsumerTest-context.xml   |  4 +-
 5 files changed, 56 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/b4573e34/components/camel-apns/src/main/java/org/apache/camel/component/apns/factory/ApnsServiceFactory.java
----------------------------------------------------------------------
diff --git a/components/camel-apns/src/main/java/org/apache/camel/component/apns/factory/ApnsServiceFactory.java b/components/camel-apns/src/main/java/org/apache/camel/component/apns/factory/ApnsServiceFactory.java
index 0debdd1..0557d2c 100644
--- a/components/camel-apns/src/main/java/org/apache/camel/component/apns/factory/ApnsServiceFactory.java
+++ b/components/camel-apns/src/main/java/org/apache/camel/component/apns/factory/ApnsServiceFactory.java
@@ -18,7 +18,7 @@ package org.apache.camel.component.apns.factory;
 
 import java.io.IOException;
 import java.io.InputStream;
-import javax.net.ssl.SSLContext;
+import java.security.GeneralSecurityException;
 
 import com.notnoop.apns.APNS;
 import com.notnoop.apns.ApnsDelegate;
@@ -36,6 +36,7 @@ import org.apache.camel.component.apns.util.ParamUtils;
 import org.apache.camel.component.apns.util.ResourceUtils;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.ResourceHelper;
+import org.apache.camel.util.jsse.SSLContextParameters;
 
 public class ApnsServiceFactory implements CamelContextAware {
 
@@ -48,7 +49,7 @@ public class ApnsServiceFactory implements CamelContextAware {
     private String certificatePassword;
     private ConnectionStrategy connectionStrategy;
     private ReconnectionPolicy reconnectionPolicy;
-    private SSLContext sslContext;
+    private SSLContextParameters sslContextParameters;
     private int poolSize = DEFAULT_POOL_SIZE;
     private String gatewayHost;
     private int gatewayPort;
@@ -149,12 +150,12 @@ public class ApnsServiceFactory implements CamelContextAware {
         this.connectionStrategy = connectionStrategy;
     }
 
-    public SSLContext getSslContext() {
-        return sslContext;
+    public SSLContextParameters getSslContextParameters() {
+        return sslContextParameters;
     }
 
-    public void setSslContext(SSLContext sslContext) {
-        this.sslContext = sslContext;
+    public void setSslContextParameters(SSLContextParameters sslContextParameters) {
+        this.sslContextParameters = sslContextParameters;
     }
 
     public ApnsDelegate getApnsDelegate() {
@@ -177,6 +178,8 @@ public class ApnsServiceFactory implements CamelContextAware {
             configureApnsCertificate(builder);
         } catch (IOException e) {
             throw ObjectHelper.wrapRuntimeCamelException(e);
+        } catch (GeneralSecurityException e) {
+            throw ObjectHelper.wrapRuntimeCamelException(e);
         }
 
         ApnsService apnsService = builder.build();
@@ -187,9 +190,9 @@ public class ApnsServiceFactory implements CamelContextAware {
         return serviceBuilder;
     }
 
-    private void configureApnsCertificate(ApnsServiceBuilder builder) throws IOException {
-        if (getSslContext() != null) {
-            builder.withSSLContext(getSslContext());
+    private void configureApnsCertificate(ApnsServiceBuilder builder) throws IOException, GeneralSecurityException {
+        if (getSslContextParameters() != null) {
+            builder.withSSLContext(getSslContextParameters().createSSLContext());
             return;
         }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/b4573e34/components/camel-apns/src/test/java/org/apache/camel/component/apns/factory/ApnsServiceFactoryTest.java
----------------------------------------------------------------------
diff --git a/components/camel-apns/src/test/java/org/apache/camel/component/apns/factory/ApnsServiceFactoryTest.java b/components/camel-apns/src/test/java/org/apache/camel/component/apns/factory/ApnsServiceFactoryTest.java
index a784ee7..84361e1 100644
--- a/components/camel-apns/src/test/java/org/apache/camel/component/apns/factory/ApnsServiceFactoryTest.java
+++ b/components/camel-apns/src/test/java/org/apache/camel/component/apns/factory/ApnsServiceFactoryTest.java
@@ -64,7 +64,7 @@ public class ApnsServiceFactoryTest {
         apnsServiceFactory.setFeedbackPort(FixedCertificates.TEST_FEEDBACK_PORT);
         apnsServiceFactory.setGatewayHost(FixedCertificates.TEST_HOST);
         apnsServiceFactory.setGatewayPort(FixedCertificates.TEST_GATEWAY_PORT);
-        apnsServiceFactory.setSslContext(ApnsUtils.clientContext());
+        apnsServiceFactory.setSslContextParameters(ApnsUtils.clientContext());
 
         return apnsServiceFactory;
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/b4573e34/components/camel-apns/src/test/java/org/apache/camel/component/apns/factory/ConfiguredApnsServiceFactoryTest.java
----------------------------------------------------------------------
diff --git a/components/camel-apns/src/test/java/org/apache/camel/component/apns/factory/ConfiguredApnsServiceFactoryTest.java b/components/camel-apns/src/test/java/org/apache/camel/component/apns/factory/ConfiguredApnsServiceFactoryTest.java
index c48c6c0..f3fc60f 100644
--- a/components/camel-apns/src/test/java/org/apache/camel/component/apns/factory/ConfiguredApnsServiceFactoryTest.java
+++ b/components/camel-apns/src/test/java/org/apache/camel/component/apns/factory/ConfiguredApnsServiceFactoryTest.java
@@ -17,9 +17,10 @@
 package org.apache.camel.component.apns.factory;
 
 import java.io.IOException;
-import javax.net.ssl.SSLContext;
 
 import com.notnoop.apns.ApnsServiceBuilder;
+
+import org.apache.camel.util.jsse.SSLContextParameters;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -42,7 +43,7 @@ public class ConfiguredApnsServiceFactoryTest {
 
     @Before
     public void setUp() throws IOException {
-        apnsServiceFactory.setSslContext(mock(SSLContext.class));
+        apnsServiceFactory.setSslContextParameters(mock(SSLContextParameters.class));
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/camel/blob/b4573e34/components/camel-apns/src/test/java/org/apache/camel/component/apns/util/ApnsUtils.java
----------------------------------------------------------------------
diff --git a/components/camel-apns/src/test/java/org/apache/camel/component/apns/util/ApnsUtils.java b/components/camel-apns/src/test/java/org/apache/camel/component/apns/util/ApnsUtils.java
index 177f74b..74f090d 100644
--- a/components/camel-apns/src/test/java/org/apache/camel/component/apns/util/ApnsUtils.java
+++ b/components/camel-apns/src/test/java/org/apache/camel/component/apns/util/ApnsUtils.java
@@ -16,17 +16,17 @@
  */
 package org.apache.camel.component.apns.util;
 
+import java.io.IOException;
 import java.io.InputStream;
+import java.security.GeneralSecurityException;
 import java.security.Provider;
 import java.security.Provider.Service;
-import java.security.SecureRandom;
 import java.security.Security;
 import java.security.cert.CertificateException;
 import java.security.cert.X509Certificate;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Random;
-
 import javax.net.ssl.SSLContext;
 import javax.net.ssl.TrustManager;
 import javax.net.ssl.X509TrustManager;
@@ -38,6 +38,10 @@ import com.notnoop.apns.utils.FixedCertificates;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.apns.factory.ApnsServiceFactory;
+import org.apache.camel.util.jsse.KeyManagersParameters;
+import org.apache.camel.util.jsse.KeyStoreParameters;
+import org.apache.camel.util.jsse.SSLContextParameters;
+import org.apache.camel.util.jsse.TrustManagersParameters;
 
 public final class ApnsUtils {
 
@@ -90,27 +94,39 @@ public final class ApnsUtils {
         return keys.get(0);
     }
     
-    public static SSLContext clientContext() throws Exception {
-        InputStream stream = ClassLoader.getSystemResourceAsStream(FixedCertificates.CLIENT_STORE);
-        SSLContext context = Utilities.newSSLContext(stream, 
-                                                     FixedCertificates.CLIENT_PASSWD,
-                                                     "PKCS12",
-                                                     getAlgorithm());
-        context.init(null, new TrustManager[] {new X509TrustManager() {
-            public void checkClientTrusted(X509Certificate[] chain, String authType)
-                throws CertificateException {
-            }
-
-            public void checkServerTrusted(X509Certificate[] chain, String authType)
-                throws CertificateException {
+    public static SSLContextParameters clientContext() throws Exception {
+        final KeyStoreParameters ksp = new KeyStoreParameters();
+        ksp.setResource(ClassLoader.getSystemResource(FixedCertificates.CLIENT_STORE).toString());
+        ksp.setType("PKCS12");
+
+        final KeyManagersParameters kmp = new KeyManagersParameters();
+        kmp.setKeyStore(ksp);
+        kmp.setKeyPassword(FixedCertificates.CLIENT_PASSWD);
+        kmp.setAlgorithm(getAlgorithm());
+
+        final SSLContextParameters contextParameters = new SSLContextParameters();
+        contextParameters.setKeyManagers(kmp);
+        contextParameters.setTrustManagers(new TrustManagersParameters() {
+            @Override
+            public TrustManager[] createTrustManagers() throws GeneralSecurityException, IOException {
+                return new TrustManager[] {new X509TrustManager() {
+                    public void checkClientTrusted(X509Certificate[] chain, String authType)
+                        throws CertificateException {
+                    }
+
+                    public void checkServerTrusted(X509Certificate[] chain, String authType)
+                        throws CertificateException {
+                    }
+
+                    public X509Certificate[] getAcceptedIssuers() {
+                        return new X509Certificate[0];
+                    }
+
+                }};
             }
+        });
 
-            public X509Certificate[] getAcceptedIssuers() {
-                return null;
-            }
-            
-        }}, new SecureRandom());
-        return context;
+        return contextParameters;
     }
     
     public static ApnsServiceFactory createDefaultTestConfiguration(CamelContext camelContext) 
@@ -124,7 +140,7 @@ public final class ApnsUtils {
         // apnsServiceFactory.setCertificatePath("classpath:/" +
         // FixedCertificates.CLIENT_STORE);
         // apnsServiceFactory.setCertificatePassword(FixedCertificates.CLIENT_PASSWD);
-        apnsServiceFactory.setSslContext(clientContext());
+        apnsServiceFactory.setSslContextParameters(clientContext());
         return apnsServiceFactory;
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/b4573e34/components/camel-apns/src/test/resources/org/apache/camel/component/apns/spring/SpringApnsConsumerTest-context.xml
----------------------------------------------------------------------
diff --git a/components/camel-apns/src/test/resources/org/apache/camel/component/apns/spring/SpringApnsConsumerTest-context.xml b/components/camel-apns/src/test/resources/org/apache/camel/component/apns/spring/SpringApnsConsumerTest-context.xml
index 712ba84..cd0c9fd 100644
--- a/components/camel-apns/src/test/resources/org/apache/camel/component/apns/spring/SpringApnsConsumerTest-context.xml
+++ b/components/camel-apns/src/test/resources/org/apache/camel/component/apns/spring/SpringApnsConsumerTest-context.xml
@@ -31,12 +31,12 @@
     <property name="feedbackPort" value="7843"/>
     <property name="gatewayHost" value="localhost"/>
     <property name="gatewayPort" value="7654"/>
-    <property name="sslContext" ref="sslContext"/>
+    <property name="sslContextParameters" ref="sslContextParameters"/>
   </bean>
 
   <bean id="apnsService" factory-bean="apnsServiceFactory" factory-method="getApnsService"/>
 
-  <bean id="sslContext" class="org.apache.camel.component.apns.util.ApnsUtils" factory-method="clientContext"/>
+  <bean id="sslContextParameters" class="org.apache.camel.component.apns.util.ApnsUtils" factory-method="clientContext"/>
 
   <bean id="apns" class="org.apache.camel.component.apns.ApnsComponent">
     <property name="apnsService" ref="apnsService"/>


[3/5] git commit: CAMEL-7954: Updated Camel-box to use SSLContextParameters

Posted by dh...@apache.org.
CAMEL-7954: Updated Camel-box to use SSLContextParameters


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/d06f3af1
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/d06f3af1
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/d06f3af1

Branch: refs/heads/master
Commit: d06f3af13aa3ec895c99db01a0a44be40d6113f9
Parents: 3db68c5
Author: Dhiraj Bokde <dh...@yahoo.com>
Authored: Fri Oct 24 13:32:01 2014 -0700
Committer: Dhiraj Bokde <dh...@yahoo.com>
Committed: Fri Oct 24 14:43:16 2014 -0700

----------------------------------------------------------------------
 .../camel/component/box/BoxConfiguration.java   | 12 +++++++++++
 .../component/box/internal/BoxClientHelper.java | 22 ++++++++++++++++++++
 .../component/box/internal/LoginAuthFlowUI.java | 15 +++++++++++++
 3 files changed, 49 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/d06f3af1/components/camel-box/src/main/java/org/apache/camel/component/box/BoxConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-box/src/main/java/org/apache/camel/component/box/BoxConfiguration.java b/components/camel-box/src/main/java/org/apache/camel/component/box/BoxConfiguration.java
index 0fdac6d..2fabf7f 100644
--- a/components/camel-box/src/main/java/org/apache/camel/component/box/BoxConfiguration.java
+++ b/components/camel-box/src/main/java/org/apache/camel/component/box/BoxConfiguration.java
@@ -24,6 +24,7 @@ import com.box.boxjavalibv2.authorization.IAuthSecureStorage;
 import com.box.boxjavalibv2.authorization.OAuthRefreshListener;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriParams;
+import org.apache.camel.util.jsse.SSLContextParameters;
 
 /**
  * Component configuration for Box component.
@@ -67,6 +68,9 @@ public class BoxConfiguration {
     @UriParam
     private Map<String, Object> httpParams;
 
+    @UriParam
+    private SSLContextParameters sslContextParameters;
+
     /**
      * Box.com login timeout in seconds, defaults to 30.
      */
@@ -169,6 +173,14 @@ public class BoxConfiguration {
         this.httpParams = httpParams;
     }
 
+    public SSLContextParameters getSslContextParameters() {
+        return sslContextParameters;
+    }
+
+    public void setSslContextParameters(SSLContextParameters sslContextParameters) {
+        this.sslContextParameters = sslContextParameters;
+    }
+
     public int getLoginTimeout() {
         return loginTimeout;
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/d06f3af1/components/camel-box/src/main/java/org/apache/camel/component/box/internal/BoxClientHelper.java
----------------------------------------------------------------------
diff --git a/components/camel-box/src/main/java/org/apache/camel/component/box/internal/BoxClientHelper.java b/components/camel-box/src/main/java/org/apache/camel/component/box/internal/BoxClientHelper.java
index 0f94aec..54c3e49 100644
--- a/components/camel-box/src/main/java/org/apache/camel/component/box/internal/BoxClientHelper.java
+++ b/components/camel-box/src/main/java/org/apache/camel/component/box/internal/BoxClientHelper.java
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.component.box.internal;
 
+import java.io.IOException;
+import java.security.GeneralSecurityException;
 import java.util.Map;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
@@ -29,11 +31,16 @@ import com.box.boxjavalibv2.exceptions.AuthFatalFailureException;
 import com.box.boxjavalibv2.exceptions.BoxServerException;
 import com.box.restclientv2.IBoxRESTClient;
 import com.box.restclientv2.exceptions.BoxRestException;
+
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.component.box.BoxConfiguration;
 import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.util.jsse.SSLContextParameters;
 import org.apache.http.client.HttpClient;
 import org.apache.http.conn.ClientConnectionManager;
+import org.apache.http.conn.scheme.Scheme;
+import org.apache.http.conn.scheme.SchemeRegistry;
+import org.apache.http.conn.ssl.SSLSocketFactory;
 import org.apache.http.params.HttpParams;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -79,6 +86,21 @@ public final class BoxClientHelper {
             public HttpClient getRawHttpClient() {
                 final HttpClient httpClient = super.getRawHttpClient();
                 clientConnectionManager[0] = httpClient.getConnectionManager();
+                final SchemeRegistry schemeRegistry = clientConnectionManager[0].getSchemeRegistry();
+                SSLContextParameters sslContextParameters = configuration.getSslContextParameters();
+                if (sslContextParameters == null) {
+                    sslContextParameters = new SSLContextParameters();
+                }
+                try {
+                    final SSLSocketFactory socketFactory = new SSLSocketFactory(
+                        sslContextParameters.createSSLContext(),
+                        SSLSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER);
+                    schemeRegistry.register(new Scheme("https", socketFactory, 443));
+                } catch (GeneralSecurityException e) {
+                    throw ObjectHelper.wrapRuntimeCamelException(e);
+                } catch (IOException e) {
+                    throw ObjectHelper.wrapRuntimeCamelException(e);
+                }
 
                 // set custom HTTP params
                 final Map<String, Object> configParams = configuration.getHttpParams();

http://git-wip-us.apache.org/repos/asf/camel/blob/d06f3af1/components/camel-box/src/main/java/org/apache/camel/component/box/internal/LoginAuthFlowUI.java
----------------------------------------------------------------------
diff --git a/components/camel-box/src/main/java/org/apache/camel/component/box/internal/LoginAuthFlowUI.java b/components/camel-box/src/main/java/org/apache/camel/component/box/internal/LoginAuthFlowUI.java
index 568d27c..0568ad9 100644
--- a/components/camel-box/src/main/java/org/apache/camel/component/box/internal/LoginAuthFlowUI.java
+++ b/components/camel-box/src/main/java/org/apache/camel/component/box/internal/LoginAuthFlowUI.java
@@ -16,12 +16,16 @@
  */
 package org.apache.camel.component.box.internal;
 
+import java.io.IOException;
+import java.security.GeneralSecurityException;
 import java.security.SecureRandom;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import javax.net.ssl.SSLContext;
+
 import com.box.boxjavalibv2.BoxClient;
 import com.box.boxjavalibv2.authorization.IAuthFlowListener;
 import com.box.boxjavalibv2.authorization.IAuthFlowUI;
@@ -43,6 +47,8 @@ import com.gargoylesoftware.htmlunit.html.HtmlPasswordInput;
 import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
 import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
 import org.apache.camel.component.box.BoxConfiguration;
+import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.util.jsse.SSLContextParameters;
 import org.apache.http.HttpHost;
 import org.apache.http.HttpStatus;
 import org.apache.http.conn.params.ConnRoutePNames;
@@ -81,6 +87,15 @@ public final class LoginAuthFlowUI implements IAuthFlowUI {
         options.setThrowExceptionOnFailingStatusCode(true);
         options.setThrowExceptionOnScriptError(true);
         options.setPrintContentOnFailingStatusCode(LOG.isDebugEnabled());
+        try {
+            // use default SSP to create supported non-SSL protocols list
+            final SSLContext sslContext = new SSLContextParameters().createSSLContext();
+            options.setSSLClientProtocols(sslContext.createSSLEngine().getEnabledProtocols());
+        } catch (GeneralSecurityException e) {
+            throw ObjectHelper.wrapRuntimeCamelException(e);
+        } catch (IOException e) {
+            throw ObjectHelper.wrapRuntimeCamelException(e);
+        }
 
         // add HTTP proxy if set
         final Map<String, Object> httpParams = configuration.getHttpParams();


[5/5] git commit: CAMEL-7934: Updated Camel-olingo2 to use SSLContextParameters

Posted by dh...@apache.org.
CAMEL-7934: Updated Camel-olingo2 to use SSLContextParameters


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/bc5bfe46
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/bc5bfe46
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/bc5bfe46

Branch: refs/heads/master
Commit: bc5bfe46a76c6b1d18537639cac5625412f00622
Parents: b4573e3
Author: Dhiraj Bokde <dh...@yahoo.com>
Authored: Fri Oct 24 13:37:59 2014 -0700
Committer: Dhiraj Bokde <dh...@yahoo.com>
Committed: Fri Oct 24 14:43:16 2014 -0700

----------------------------------------------------------------------
 .../component/olingo2/Olingo2Component.java      | 19 +++++++++++++++----
 .../component/olingo2/Olingo2Configuration.java  | 16 ++++++++--------
 2 files changed, 23 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/bc5bfe46/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Component.java
----------------------------------------------------------------------
diff --git a/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Component.java b/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Component.java
index 866817f..69faa56 100644
--- a/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Component.java
+++ b/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Component.java
@@ -16,8 +16,9 @@
  */
 package org.apache.camel.component.olingo2;
 
+import java.io.IOException;
+import java.security.GeneralSecurityException;
 import java.util.Map;
-import javax.net.ssl.SSLContext;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
@@ -25,7 +26,9 @@ import org.apache.camel.component.olingo2.api.impl.Olingo2AppImpl;
 import org.apache.camel.component.olingo2.internal.Olingo2ApiCollection;
 import org.apache.camel.component.olingo2.internal.Olingo2ApiName;
 import org.apache.camel.spi.UriEndpoint;
+import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.component.AbstractApiComponent;
+import org.apache.camel.util.jsse.SSLContextParameters;
 import org.apache.http.HttpHost;
 import org.apache.http.client.config.RequestConfig;
 import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
@@ -122,9 +125,17 @@ public class Olingo2Component extends AbstractApiComponent<Olingo2ApiName, Oling
             // set default request config
             clientBuilder.setDefaultRequestConfig(requestConfigBuilder.build());
 
-            final SSLContext context = configuration.getSslContext();
-            if (context != null) {
-                clientBuilder.setSSLContext(context);
+            SSLContextParameters sslContextParameters = configuration.getSslContextParameters();
+            if (sslContextParameters == null) {
+                // use defaults if not specified
+                sslContextParameters = new SSLContextParameters();
+            }
+            try {
+                clientBuilder.setSSLContext(sslContextParameters.createSSLContext());
+            } catch (GeneralSecurityException e) {
+                throw ObjectHelper.wrapRuntimeCamelException(e);
+            } catch (IOException e) {
+                throw ObjectHelper.wrapRuntimeCamelException(e);
             }
         }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/bc5bfe46/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Configuration.java
----------------------------------------------------------------------
diff --git a/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Configuration.java b/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Configuration.java
index e6ec348..2e2771f 100644
--- a/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Configuration.java
+++ b/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Configuration.java
@@ -17,10 +17,10 @@
 package org.apache.camel.component.olingo2;
 
 import java.util.Map;
-import javax.net.ssl.SSLContext;
 
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriParams;
+import org.apache.camel.util.jsse.SSLContextParameters;
 import org.apache.commons.lang.builder.HashCodeBuilder;
 import org.apache.http.HttpHost;
 import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
@@ -55,7 +55,7 @@ public class Olingo2Configuration {
     private HttpHost proxy;
 
     @UriParam
-    private SSLContext sslContext;
+    private SSLContextParameters sslContextParameters;
 
     // for more complex configuration, use a client builder
     @UriParam
@@ -109,12 +109,12 @@ public class Olingo2Configuration {
         this.proxy = proxy;
     }
 
-    public SSLContext getSslContext() {
-        return sslContext;
+    public SSLContextParameters getSslContextParameters() {
+        return sslContextParameters;
     }
 
-    public void setSslContext(SSLContext sslContext) {
-        this.sslContext = sslContext;
+    public void setSslContextParameters(SSLContextParameters sslContextParameters) {
+        this.sslContextParameters = sslContextParameters;
     }
 
     public HttpAsyncClientBuilder getHttpAsyncClientBuilder() {
@@ -134,7 +134,7 @@ public class Olingo2Configuration {
             .append(connectTimeout)
             .append(socketTimeout)
             .append(proxy)
-            .append(sslContext)
+            .append(sslContextParameters)
             .append(httpAsyncClientBuilder)
             .hashCode();
     }
@@ -149,7 +149,7 @@ public class Olingo2Configuration {
                 && connectTimeout == other.connectTimeout
                 && socketTimeout == other.socketTimeout
                 && proxy == null ? other.proxy == null : proxy.equals(other.proxy)
-                && sslContext == null ? other.sslContext == null : sslContext.equals(other.sslContext)
+                && sslContextParameters == null ? other.sslContextParameters == null : sslContextParameters.equals(other.sslContextParameters)
                 && httpAsyncClientBuilder == null ? other.httpAsyncClientBuilder == null
                 : httpAsyncClientBuilder.equals(other.httpAsyncClientBuilder);
         }