From 1340628e0a48f34667cd021e0791db661df10b45 Mon Sep 17 00:00:00 2001 From: Xavier Bauquet Date: Fri, 9 Mar 2018 10:15:41 +0100 Subject: [PATCH] Add given httpTransport in GooglePublicKeysManager Construct the default GooglePublicKeysManager with the custom httpTransport. This avoid error due to proxy. Fixes #150 --- src/main/java/com/google/firebase/auth/FirebaseAuth.java | 7 ++++++- .../firebase/auth/internal/FirebaseTokenVerifier.java | 8 ++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/google/firebase/auth/FirebaseAuth.java b/src/main/java/com/google/firebase/auth/FirebaseAuth.java index 52fd7ed5e..bbb9feb2b 100644 --- a/src/main/java/com/google/firebase/auth/FirebaseAuth.java +++ b/src/main/java/com/google/firebase/auth/FirebaseAuth.java @@ -66,7 +66,10 @@ public class FirebaseAuth { private final Object lock; private FirebaseAuth(FirebaseApp firebaseApp) { - this(firebaseApp, FirebaseTokenVerifier.DEFAULT_KEY_MANAGER, Clock.SYSTEM); + this(firebaseApp, + FirebaseTokenVerifier.buildGooglePublicKeysManager( + firebaseApp.getOptions().getHttpTransport()), + Clock.SYSTEM); } /** @@ -210,12 +213,14 @@ private Task verifyIdToken(final String token, final boolean chec return call(new Callable() { @Override public FirebaseToken call() throws Exception { + FirebaseTokenVerifier firebaseTokenVerifier = new FirebaseTokenVerifier.Builder() .setProjectId(projectId) .setPublicKeysManager(googlePublicKeysManager) .setClock(clock) .build(); + FirebaseToken firebaseToken = FirebaseToken.parse(jsonFactory, token); // This will throw a FirebaseAuthException with details on how the token is invalid. diff --git a/src/main/java/com/google/firebase/auth/internal/FirebaseTokenVerifier.java b/src/main/java/com/google/firebase/auth/internal/FirebaseTokenVerifier.java index 5a3d6ddff..db89a7ec5 100644 --- a/src/main/java/com/google/firebase/auth/internal/FirebaseTokenVerifier.java +++ b/src/main/java/com/google/firebase/auth/internal/FirebaseTokenVerifier.java @@ -20,6 +20,7 @@ import com.google.api.client.auth.openidconnect.IdToken.Payload; import com.google.api.client.auth.openidconnect.IdTokenVerifier; import com.google.api.client.googleapis.auth.oauth2.GooglePublicKeysManager; +import com.google.api.client.http.HttpTransport; import com.google.api.client.http.javanet.NetHttpTransport; import com.google.api.client.json.gson.GsonFactory; import com.google.api.client.json.webtoken.JsonWebSignature.Header; @@ -183,6 +184,13 @@ public String getProjectId() { return projectId; } + public static GooglePublicKeysManager buildGooglePublicKeysManager(HttpTransport transport) { + return new GooglePublicKeysManager.Builder(transport, new GsonFactory()) + .setClock(Clock.SYSTEM) + .setPublicCertsEncodedUrl(FirebaseTokenVerifier.CLIENT_CERT_URL) + .build(); + } + /** * Builder for {@link FirebaseTokenVerifier}. */