1

現在、Linuxで実行されているJava 1.6(u19)クライアントであるRHEL5.5から統合Windows認証が有効になっているIISで実行されているMicrosoftProjectServer2007インスタンスでの認証ができなくなっています。

注:クライアントは私のWindowsワークステーションで動作します。

最初にJAX-WS呼び出しを実装しようとしましたが、認証エラー、具体的には401.2、続いて500が原因でWSDLを取得できなかったことがわかりました。そこで、次のようなJavaクラスに簡略化しました。

  1. を作成Authenticatorし、プロジェクトサーバーサイトへのアクセス許可を持つADのユーザー名/パスワードを使用してデフォルトとして設定します
  2. java.net.URLオブジェクトを作成する
  3. を作成しjava.net.HttpURLConnectionて呼び出すgetInputStream
  4. この時点で障害が発生します。

HttpURLConnectionデバッグをオンにすると、次のことがわかります。

  1. サーバーから返された初期認証の失敗(401.2)で、応答に「negotiate」と「NTLM」が含まれています。
  2. クライアントがNTLMトークンを作成し、それをサーバーに送り返します
  3. サーバーが500ステータスコードで戻る

ログのWindowsサーバーでは、要求のためだけにログファイルにユーザー名が含まれておらず、「匿名」を意味すると思われる「-」のみが含まれていることがわかります。

私の考えでは、Project Serverは、渡されて窒息しているNTLMトークンを好みません。これに関する多くの投稿に基づいて、NTLM(v1およびv2)はJava1.6内でサポートされると想定されています。

どんな助けでも大歓迎です...

UPDATE 6/20/12:ネットワークセキュリティのローカルセキュリティポリシー設定に問題を絞り込みました:NTLM SSPベース(RPCを含む)サーバーの最小セッションセキュリティ。Javaクライアントが失敗する原因となる設定は、「NTLMv2セキュリティが必要」です。1.6JDKでのNTLMサポートについて主張されていることに反します。

いくつかの参考文献:

4

1 に答える 1

0

しばらく前にこの問題が発生したとき、他の誰かが作成したスキームを使用することになりました。

http://devsac.blogspot.com/2010/10/supoprt-for-ntlmv2-with-apache.html

ntlmを使用してiisサーバーから画像ファイルを取得する必要があるときに役立ちました。上記のコードを使用したスニペット..

AuthPolicy.registerAuthScheme(AuthPolicy.NTLM, org.xyz.JCIFS_NTLMScheme.class);
            HttpClient client = new HttpClient();
            client.getState().setCredentials(AuthScope.ANY, new NTCredentials(userName, password, "", strDomain));
            GetMethod get = new GetMethod(strImageFile);
            get.setDoAuthentication(true);
            client.executeMethod(get);
于 2013-10-03T23:12:20.663 に答える