2017-09-18 44 views
0

企業プロキシの背後にazure-notificationhubs-java-backendライブラリを使用する方法はありますか?認証でプロキシ経由でazure-notificationhubs-java-backendを使用する

私はアプリケーションサーバー(JBoss 6)でライブラリを使用していますので、全体的に影響するので、古典的なJavaシステムプロパティのアプローチ(https.proxyHost、https.proxyPortなど)は避けてください。 JVM。

ありがとうございます。プロキシがAPIを設定せずazure-notificationhubs-java-backendライブラリに基づいて

よろしく、 ヌノ・ゲレイロ

答えて

0

、あなたのJBossの全体のJVMのための任意の愛情なしに認証とプロキシ経由でそれを使用するどのような方法ではないがあるように思われます。

私の経験上、唯一の方法は、Azure notificationhubs javaバックエンドを実行し、RPCの方法で他のJBossサーバーインスタンス上のメインアプリケーションと通信するために、プロキシ設定用のJavaシステムプロパティを使用してJBossサーバーの新しいインスタンスを作成することですREST API、WS * APIなどのようなものです。

希望します。

0

私はこの問題を解決することができました。私はここにソリューションを掲載しています。

私の具体的なケースでは、私はWindows 8 PCを使用し、プロキシにはWindows(NTLM)認証が必要です。下記のコードでは、NTLM統合認証を使用しています。つまり、現在ログインしているユーザーのセキュリティ資格情報が使用されるため、明示的にユーザー名とパスワードを設定する必要はありません。

import com.windowsazure.messaging.*; 

import java.util.concurrent.Future; 

import org.apache.http.auth.AuthSchemeProvider; 
import org.apache.http.client.CredentialsProvider; 
import org.apache.http.client.config.AuthSchemes; 
import org.apache.http.concurrent.FutureCallback; 
import org.apache.http.config.Registry; 
import org.apache.http.config.RegistryBuilder; 
import org.apache.http.HttpHost; 
import org.apache.http.impl.auth.BasicSchemeFactory; 
import org.apache.http.impl.auth.DigestSchemeFactory; 
import org.apache.http.impl.auth.win.WindowsCredentialsProvider; 
import org.apache.http.impl.auth.win.WindowsNTLMSchemeFactory; 
import org.apache.http.impl.auth.win.WindowsNegotiateSchemeFactory; 
import org.apache.http.impl.client.SystemDefaultCredentialsProvider; 
import org.apache.http.impl.client.WinHttpClients; 
import org.apache.http.impl.nio.client.CloseableHttpAsyncClient; 
import org.apache.http.impl.nio.client.HttpAsyncClientBuilder; 

public class Test9 { 
    private static HttpAsyncClientBuilder createAsyncBuilderWithProxy(String proxyHost, int proxyPort) { 
     if (WinHttpClients.isWinAuthAvailable()) { 
      final Registry<AuthSchemeProvider> authSchemeRegistry = RegistryBuilder.<AuthSchemeProvider>create() 
        .register(AuthSchemes.BASIC, new BasicSchemeFactory()) 
        .register(AuthSchemes.DIGEST, new DigestSchemeFactory()) 
        .register(AuthSchemes.NTLM, new WindowsNTLMSchemeFactory(null)) 
        .register(AuthSchemes.SPNEGO, new WindowsNegotiateSchemeFactory(null)) 
        .build(); 
      final CredentialsProvider credsProvider = new WindowsCredentialsProvider(new SystemDefaultCredentialsProvider()); 
      return HttpAsyncClientBuilder.create() 
        .setDefaultCredentialsProvider(credsProvider) 
        .setDefaultAuthSchemeRegistry(authSchemeRegistry) 
        .setProxy(new HttpHost(proxyHost, proxyPort)); 
     } else { 
      return HttpAsyncClientBuilder.create().setProxy(new HttpHost(proxyHost, proxyPort)); 
     } 
    } 

    public static void main(String[] args) throws Exception { 
     if(args.length < 4) { 
      System.err.println("syntax: java Test9 <hub connection string> <hub name> <push notification address> <push message>"); 
     } else { 
      String hubConnectionString = args[0]; 
      String hubName = args[1]; 
      String pushNotificationAddress = args[2]; 
      String pushMessage = args[3]; 

      CloseableHttpAsyncClient httpClient = createAsyncBuilderWithProxy("proxy.corporate.com", 8080).build(); 
      httpClient.start(); 
      HttpClientManager.setHttpAsyncClient(httpClient); 

      NotificationHub hub = new NotificationHub(hubConnectionString, hubName); 

      Notification notification = Notification.createGcmNotifiation(pushMessage); 

      hub.sendDirectNotification(notification, pushNotificationAddress); 

      System.out.println("Notification sent!"); 

      httpClient.close(); 
     } 
    } 
} 
関連する問題