Use un solo transporte proxy para Firebase Admin Java y la actualización de tokens
Pase la fábrica de transporte a GoogleCredentials y el transporte a FirebaseOptions para que ambas rutas HTTP reciban el proxy.
Configure las dos entradas de transporte cuando las llamadas HTTP de Firebase y la actualización de credenciales deban usar el mismo proxy. Un extremo HTTP público elegido de la lista de proxies HTTP necesita ese mismo par de entregas:
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);Las dos entregas importantes son fromStream(serviceAccountStream, () -> transport) y setHttpTransport(transport). La primera aporta el transporte HTTP para obtener tokens de acceso; la segunda aporta el transporte HTTP de la aplicación Firebase. Si solo se configura una, la otra puede quedarse en su ruta predeterminada.
serviceAccountStream es el flujo de credenciales de cuenta de servicio de confianza de la aplicación. Conserve la aplicación para su carga de trabajo y libérela mediante el ciclo de vida normal de Firebase. El ajuste de proxy deja intacto el nombre de host de destino para la verificación TLS; no exige sustituir clases del SDK ni una fábrica SSL que confíe en todo.
El alcance aquí son las interfaces HTTP mostradas. Una carga de trabajo que use el WebSocket de Realtime Database u otro transporte de servicio necesita que se compruebe por separado el soporte de enrutamiento de ese transporte.