Använd en enda proxytransport för Firebase Admin Java och tokenförnyelse
Skicka transportfabriken till GoogleCredentials och transporten till FirebaseOptions så att båda HTTP-vägarna får proxyn.
Konfigurera båda transportinmatningarna när Firebase HTTP-anrop och förnyelse av autentiseringsuppgifter måste använda samma proxy. En offentlig HTTP-slutpunkt som väljs från HTTP-proxylistan behöver samma par av överlämningar:
var proxy = new java.net.Proxy(
java.net.Proxy.Type.HTTP,
new java.net.InetSocketAddress("proxy.example.net", 8080));
var transport =
new com.google.api.client.http.javanet.NetHttpTransport.Builder()
.setProxy(proxy)
.build();
var credentials = com.google.auth.oauth2.GoogleCredentials.fromStream(
serviceAccountStream, () -> transport);
var options = com.google.firebase.FirebaseOptions.builder()
.setCredentials(credentials)
.setHttpTransport(transport)
.build();
var app = com.google.firebase.FirebaseApp.initializeApp(options);De två viktiga överlämningarna är fromStream(serviceAccountStream, () -> transport) och setHttpTransport(transport). Den första tillhandahåller HTTP-transporten för att hämta åtkomsttoken; den andra tillhandahåller Firebase-appens HTTP-transport. Om bara en ställs in kan den andra ligga kvar på sin standardväg.
serviceAccountStream är appens betrodda autentiseringsström för tjänstekontot. Behåll appen för dess arbetsbelastning och släpp den via Firebase normala livscykel. Proxyinställningen lämnar målvärdnamnet intakt för TLS-verifiering; den kräver varken utbyte av SDK-klasser eller en SSL-fabrik som litar på allt.
Omfattningen här är de visade HTTP-gränssnitten. En arbetsbelastning som använder Realtime Database WebSocket eller en annan tjänstetransport behöver att den transportens routingstöd kontrolleras separat.