Зависимость spring-cloud-starter-config испортила мою аутентификацию прокси - PullRequest
0 голосов
/ 04 февраля 2020
@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());
        }
      });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...