Firebase Admin Java와 토큰 갱신에 하나의 프록시 전송 사용
전송 팩터리를 GoogleCredentials에, 전송을 FirebaseOptions에 넘겨 두 HTTP 경로가 모두 프록시를 사용하게 합니다.
Firebase의 HTTP 호출과 자격 증명 갱신이 같은 프록시를 사용해야 할 때는 두 전송 입력을 모두 구성합니다. HTTP 프록시 목록에서 고른 공용 HTTP 엔드포인트도 같은 두 가지 전달이 필요합니다:
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);중요한 전달은 fromStream(serviceAccountStream, () -> transport)와 setHttpTransport(transport)입니다. 첫째는 액세스 토큰을 얻기 위한 HTTP 전송을 제공하고, 둘째는 Firebase 앱의 HTTP 전송을 제공합니다. 하나만 설정하면 다른 하나가 기본 경로에 남을 수 있습니다.
serviceAccountStream는 앱의 신뢰할 수 있는 서비스 계정 자격 증명 스트림입니다. 앱은 해당 작업을 위해 유지하고 일반적인 Firebase 수명 주기로 해제합니다. 프록시 설정은 TLS 검증을 위해 대상 호스트 이름을 그대로 둡니다. SDK 클래스 교체도, 모든 것을 신뢰하는 SSL 팩터리도 필요하지 않습니다.
여기서 범위는 표시된 HTTP 인터페이스입니다. Realtime Database WebSocket이나 다른 서비스 전송을 쓰는 작업 부하는 해당 전송의 라우팅 지원을 별도로 확인해야 합니다.