Use um único transporte de proxy para Firebase Admin Java e a renovação de tokens
Passe a fábrica de transporte para GoogleCredentials e o transporte para FirebaseOptions para que os dois caminhos HTTP recebam o proxy.
Configure as duas entradas de transporte quando as chamadas HTTP do Firebase e a renovação de credenciais precisarem usar o mesmo proxy. Um endpoint HTTP público escolhido na lista de proxies HTTP precisa do mesmo 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);As duas entregas importantes são fromStream(serviceAccountStream, () -> transport) e setHttpTransport(transport). A primeira fornece o transporte HTTP para obter tokens de acesso; a segunda fornece o transporte HTTP do aplicativo Firebase. Definir apenas uma pode deixar a outra na sua rota padrão.
serviceAccountStream é o fluxo de credenciais de conta de serviço confiável do aplicativo. Mantenha o aplicativo para a sua carga de trabalho e libere-o pelo ciclo de vida normal do Firebase. A configuração de proxy deixa o nome do host de destino intacto para a verificação TLS; não exige substituição de classes do SDK nem uma fábrica SSL que confie em tudo.
O escopo aqui são as interfaces HTTP mostradas. Uma carga de trabalho que usa o WebSocket do Realtime Database ou outro transporte de serviço precisa de verificação separada do suporte de roteamento desse transporte.