2009-08-12 26 views
2

2つのMicrosoft ISA Proxy Server 2003を使用してインターネットに接続します。 各プロキシは、以下のように、異なるログインのスタイルを持っていますJ2SEプロキシ認証

サーバー-1:NTドメイン\アラン サーバー-2:IE、Firefoxと私のPhonecellで[email protected]

ログオンを無線LAN経由ですべてが大丈夫です。 しかし、インターネット認証が必要なJavaアプリケーションJ2SE Ver 4,5,6、 を実行すると問題が発生します。 Server-2へのログオンはOKですが、Server-2(スタイル:[email protected])ではFAILです。

注:Windows認証を使用して見てどちらのプロキシは、タイプ:あなたは助けることができる場合はNTLM

をappreceateを交渉するか、いずれかの示唆について。

アラン・L

+0

これはServerFaultの上で所属(http://serverfault.com) – ChssPly76

答えて

0

、ありがとう、あなたは、アプリケーションまたはアプレットを実行していますか?アプレットは、ブラウザのプロキシ認証メカニズムをピギーバックすることができます。

まず、cURLを使用してプロキシ経由で接続し、発生するハンドシェイクを表示することをお勧めします。プロキシサーバーは、クライアントに認証方法のリストを提供します。

ユーザーとパスワードが固定されている場合は、ブラウザセッションからヘッダーを取り出し、コード内で使用することができます。例えば、私が要求にこのヘッダーを追加することができ、かつ認証されたとして、プロキシは私が表示されます。

Proxy-Authorization: Basic AbCdEfGhOjk== 
3

java documentationはJavaでNTLM認証を有効にする方法について説明します。あなたがソースへのアクセス権を持っている場合"proxy"記事で説明したように、あなたがプログラムで次のように何かを追加し、システムプロパティを追加することができます(また、Axis2ののdiscussionを参照してください):

System.setProperty("http.auth.ntlm.domain", mydomain); 

あなたがソースへのアクセスがない場合は、プロパティを設定することができます

java -DproxyHost=host -DproxyPort=8080 -Dhttp.auth.ntlm.domain=mydomain ... 
2

この問題を乗り越えるのに役立つライブラリがいくつかあります。 Proxy Vole(ネットワークプロキシ自動検出for Java)は、Internet Explorerと同じプロキシ設定を使用してプロキシ経由で認証するのに役立ちます。

Javaアプリケーションのネットワーク接続をすぐに利用できるようにするには、Proxy-Voleライブラリを使用します。現在のプロキシ設定を自動検出するためのいくつかの戦略を提供します。選択可能な構成可能な戦略はたくさんあります。現時点では、Proxy-Voleは以下のプロキシ検出戦略をサポートしています。

  • 読むプラットフォームの設定(サポートされていますWindowsの、KDE、Gnomeの)
  • 読むブラウザの設定は(サポート:Firefox 3の。Xは、Internet Explorer)apache-使うことが多いのLinux/Unixサーバ・システム上で変数を使用
  • 読む環境変数()サポートWPAD/PAC(のみいくつかの機能を使用して
  • 自動検出スクリプト)
+0

プロジェクトはここに移動しました:http://code.google.com/p/proxy-vole/ –

+0

感謝をCasey、あなたが言及した住所へのリンクを更新しました – BenM

0

コモンズhttpClient(バージョン3)、私は次のコードを持っています。それはまったくテストされていませんが、それは一度働いたと思います:) これは、あなたがプログラムを修正することができる場合です。サードパーティのパッケージであれば何もできません。


String proxyHost = System.getProperty("https.proxyHost"); 
       int proxyPort = 0; 
       try { 
        proxyPort = Integer.parseInt(System 
          .getProperty("https.proxyPort")); 
       } catch (Exception ex) { 
        // 
       }

  System.setProperty("java.net.useSystemProxies", "true"); 

      ProxySelector ps = ProxySelector.getDefault(); 
      List<Proxy> proxyList = ps.select(new URI(targetUrl)); 
      Proxy proxy = proxyList.get(0); 
      if (proxy != null) { 
       InetSocketAddress addr = ((InetSocketAddress) proxy 
         .address()); 
       if (addr != null) { 
        proxyHost = addr.getHostName(); 
        proxyPort = addr.getPort(); 
       } 
      } 

      boolean useProxy = proxyHost != null && proxyHost.length() > 0; 

      if (useProxy) { 
       httpClient.getHostConfiguration().setProxy(proxyHost, 
         proxyPort); 
      } 

関連する問題