Проблема с java-прокси ADAL4j

Я пытаюсь подключить лазурь, используя библиотеку adal4j для java. Но мне нужно подключиться через прокси. Ниже приведен фрагмент кода.

String url = "https://login.microsoftonline.com/tenant_id/oauth2/authorize";
            authContext = new AuthenticationContext(url,false,
                                                    service);
   Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("proxyhostname", 443));
   authContext.setProxy(proxy);
   ClientCredential clientCred = new ClientCredential(XXXX, xxxx);
   Future<AuthenticationResult>  future = authContext.acquireToken(                                                   
                                                                clientCred,
                                                                null);
   authResult = future.get();

Также я пробовал с

            System.setProperty("http.proxyPort", "80");
            System.setProperty("http.proxyUser", "xxxx");
            System.setProperty("http.proxyPassword", "xxxx");
            System.setProperty("http.proxyHost", "xxxxxxx");

И все время я получаю эту следующую ошибку

the error is.....java.net.ConnectException: Connection timed out: connect
java.util.concurrent.ExecutionException: java.net.ConnectException: Connection timed out: connect
    at java.util.concurrent.FutureTask.report(FutureTask.java:122)
    at java.util.concurrent.FutureTask.get(FutureTask.java:188)
    at com.toyota.eap.auth.Test.main(Test.java:76)
Caused by: java.net.ConnectException: Connection timed out: connect

Примечание. Эта ошибка возникает только в том случае, если у нас есть прокси в офисе. Извне офиса Если я запустил эту программу, проблем не было.

Любая мысль по этому поводу.

Спасибо


person user2052854    schedule 06.11.2015    source источник
comment
Для доступа к AAD через прокси-сервер в Java вы можете просмотреть поток stackoverflow .com/questions/32522773/adal-for-java-proxy/. Тем временем, пожалуйста, проверьте сеть офиса с прокси и убедитесь, что она доступна и действительна.   -  person Peter Pan    schedule 09.11.2015


Ответы (1)


Существовали темы, чтобы ответить на проблему java.net.ConnectException: Connection timed out при использовании Adal4j с прокси. Ознакомьтесь с ADAL для прокси-сервера Java и Проблемы с прокси-сервером Java - время ожидания подключения истекло и Как заставить HttpURLConnection использовать прокси?.

Для получения дополнительной информации вы можете использовать функцию setConnectTimeout класса URLConnection (см. http://docs.oracle.com/javase/1.5.0/docs/api/java/net/URLConnection.html), чтобы решить эту проблему, см. изображение и код ниже:

введите здесь описание изображения

String url = "<url_link for http or https>";
int timeout = 30*1000; // 30 seconds
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("<proxy_host>", <proxy_port>));
// if need to auth for proxy
Authenticator authenticator = new Authenticator() {
    public PasswordAuthentication getPasswordAuthentication() {
        return (new PasswordAuthentication("<user>",
            "<password>".toCharArray()));
    }
};
Authenticator.setDefault(authenticator);
// open connection using proxy directly for this connection
// if not, setting in the JVM startup argus  or using System.setProperty for app global scope
HttpURLConnection conn = new URL(url).openConnection(proxy); // Also HttpsURLConnection
conn.setConnectTimeout(timeout);    // set Timeout

Между тем, согласно моему опыту, если IP-адрес и порт прокси-сервера расположены в обещанной сетевой среде, вы можете использовать его в локальной среде, но не в Azure. С этой точки зрения, я думаю, вы должны сначала подтвердить, что прокси-сервер действителен на обещании и в Azure.

Если соединение может установиться и занять много времени, полезно установить свойство тайм-аута соединения, как я указал выше.

person Peter Pan    schedule 12.11.2015