@Configuration
public class FirebaseConfiguration {
@Value("${firebase.accountKey}")
private String accountKey;
@Value("${firebase.databaseUrl}")
private String databaseUrl;
@Value("${firebase.proxy.enabled}")
private boolean proxyEnabled;
@Value("${firebase.proxy.host}")
private String proxyHost;
@Value("${firebase.proxy.port:3128}")
private int proxyPort;
@Value("${firebase.proxy.user}")
private String proxyUser;
@Value("${firebase.proxy.password}")
private String proxyPassword;
@Bean
public FirebaseApp firebaseApp() throws IOException {
FileInputStream serviceAccount = new FileInputStream(accountKey);
FirebaseOptions options;
if (proxyEnabled) {
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort));
HttpTransport httpTransport = new NetHttpTransport.Builder().setProxy(proxy).build();
HttpTransportFactory httpTransportFactory = () -> httpTransport;
Authenticator.setDefault(new Authenticator() {
@Override
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(proxyUser,proxyPassword.toCharArray());
}
});
options = new FirebaseOptions.Builder()
.setCredentials(GoogleCredentials.fromStream(serviceAccount, httpTransportFactory))
.setDatabaseUrl(databaseUrl).setHttpTransport(httpTransport).build();
System.setProperty("jdk.http.auth.tunneling.disabledSchemes", "true");
} else {
options =
new FirebaseOptions.Builder().setCredentials(GoogleCredentials.fromStream(serviceAccount))
.setDatabaseUrl(databaseUrl).build();
}
return FirebaseApp.initializeApp(options);
}
}
Эта конфигурация работала отлично, пока я не добавил эту зависимость
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
После этого я получаю код ошибки 407, ошибка аутентификации прокси. Отладка показала, что эта строка кода не выполняется
Authenticator.setDefault(new Authenticator() {
@Override
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(proxyUser,proxyPassword.toCharArray());
}
});