diff --git a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubOAuthConfig.java b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubOAuthConfig.java
index 43d778a..12f02e4 100644
--- a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubOAuthConfig.java
+++ b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubOAuthConfig.java
@@ -18,6 +18,7 @@
 import com.google.common.base.Preconditions;
 import com.google.common.base.Strings;
 import com.google.common.collect.Maps;
+import com.google.gerrit.httpd.ProxyProperties;
 import com.google.gerrit.reviewdb.client.AuthType;
 import com.google.gerrit.server.config.AuthConfig;
 import com.google.gerrit.server.config.CanonicalWebUrl;
@@ -28,6 +29,7 @@
 
 import org.eclipse.jgit.lib.Config;
 
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -65,7 +67,9 @@
   @Inject
   protected
   GitHubOAuthConfig(@GerritServerConfig Config config,
-      @CanonicalWebUrl String canonicalWebUrl, AuthConfig authConfig) {
+      @CanonicalWebUrl String canonicalWebUrl, 
+      AuthConfig authConfig,
+      ProxyProperties proxyProperties) {
     httpHeader =
         Preconditions.checkNotNull(
             config.getString("auth", null, "httpHeader"),
@@ -103,6 +107,21 @@
         config.getInt(CONF_SECTION, "fileUpdateMaxRetryCount", 3);
     fileUpdateMaxRetryIntervalMsec =
         config.getInt(CONF_SECTION, "fileUpdateMaxRetryIntervalMsec", 3000);
+
+    URL proxyUrl = proxyProperties.getProxyUrl();
+    if (proxyUrl != null) {
+      setProxyProperty("proxyHost", proxyUrl.getHost());
+      setProxyProperty("proxyPort", "" + proxyUrl.getPort());
+      setProxyProperty("proxyUser", proxyProperties.getUsername());
+      setProxyProperty("proxyPassword", proxyProperties.getPassword());
+    }
+  }
+
+  private static void setProxyProperty(String property, String value) {
+    if (value != null) {
+      System.setProperty("http." + property, value);
+      System.setProperty("https." + property, value);
+    }
   }
 
   private Map<String, List<Scope>> getScopes(Config config) {
diff --git a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/GitHubConfig.java b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/GitHubConfig.java
index 249a61e..51e63a7 100644
--- a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/GitHubConfig.java
+++ b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/GitHubConfig.java
@@ -15,6 +15,7 @@
 
 import com.google.common.base.MoreObjects;
 import com.google.common.collect.Maps;
+import com.google.gerrit.httpd.ProxyProperties;
 import com.google.gerrit.server.config.AllProjectsNameProvider;
 import com.google.gerrit.server.config.AuthConfig;
 import com.google.gerrit.server.config.CanonicalWebUrl;
@@ -78,9 +79,10 @@
       final SitePaths site, 
       AllProjectsNameProvider allProjectsNameProvider,
       @CanonicalWebUrl String canonicalWebUrl, 
-      AuthConfig authConfig)
+      AuthConfig authConfig,
+      ProxyProperties proxyProperties)
       throws MalformedURLException {
-    super(config, canonicalWebUrl, authConfig);
+    super(config, canonicalWebUrl, authConfig, proxyProperties);
     String[] wizardFlows =
         config.getStringList(CONF_SECTION, null, CONF_WIZARD_FLOW);
     for (String fromTo : wizardFlows) {
