Bruk én proxy-transport for Firebase Admin Java og tokenfornyelse
Send transportfabrikken til GoogleCredentials og transporten til FirebaseOptions slik at begge HTTP-veiene får proxyen.
Konfigurer begge transportinndataene når Firebase HTTP-kall og fornyelse av legitimasjon skal bruke samme proxy. Et offentlig HTTP-endepunkt valgt fra HTTP-proxylisten trenger det samme paret av overleveringer:
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 to viktige overleveringene er fromStream(serviceAccountStream, () -> transport) og setHttpTransport(transport). Den første leverer HTTP-transporten for å hente tilgangstokener; den andre leverer Firebase-appens HTTP-transport. Setter man bare én, kan den andre bli værende på standardruten sin.
serviceAccountStream er appens klarerte legitimasjonsstrøm for tjenestekontoen. Behold appen for arbeidsbelastningen og frigjør den via Firebase' normale livssyklus. Proxyinnstillingen lar destinasjonens vertsnavn stå urørt for TLS-verifisering; den krever verken utskifting av SDK-klasser eller en SSL-fabrikk som stoler på alt.
Omfanget her er de viste HTTP-grensesnittene. En arbeidsbelastning som bruker WebSocket fra Realtime Database eller en annen tjenestetransport, må få støtten for ruting i den transporten kontrollert separat.