Utiliser un seul transport proxy pour Firebase Admin Java et le rafraîchissement des jetons
Passez la fabrique de transport à GoogleCredentials et le transport à FirebaseOptions pour que les deux chemins HTTP utilisent le proxy.
Configurez les deux entrées de transport lorsque les appels HTTP de Firebase et le rafraîchissement des identifiants doivent utiliser le même proxy. Un point de terminaison HTTP public choisi dans la liste de proxys HTTP a besoin de ce même couple de transmissions :
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);Les deux transmissions importantes sont fromStream(serviceAccountStream, () -> transport) et setHttpTransport(transport). La première fournit le transport HTTP pour obtenir des jetons d'accès ; la seconde fournit le transport HTTP de l'application Firebase. N'en définir qu'une peut laisser l'autre sur son itinéraire par défaut.
serviceAccountStream est le flux d'identifiants de compte de service de confiance de l'application. Conservez l'application pour sa charge de travail et libérez-la via le cycle de vie Firebase habituel. Le réglage du proxy laisse intact le nom d'hôte de destination pour la vérification TLS ; il n'exige ni remplacement de classes du SDK ni fabrique SSL qui fait confiance à tout.
Le périmètre ici est celui des interfaces HTTP montrées. Une charge de travail utilisant le WebSocket de Realtime Database ou un autre transport de service doit faire vérifier séparément la prise en charge du routage de ce transport.