現在、Linuxで実行されているJava 1.6(u19)クライアントであるRHEL5.5から統合Windows認証が有効になっているIISで実行されているMicrosoftProjectServer2007インスタンスでの認証ができなくなっています。
注:クライアントは私のWindowsワークステーションで動作します。
最初にJAX-WS呼び出しを実装しようとしましたが、認証エラー、具体的には401.2、続いて500が原因でWSDLを取得できなかったことがわかりました。そこで、次のようなJavaクラスに簡略化しました。
- を作成
Authenticator
し、プロジェクトサーバーサイトへのアクセス許可を持つADのユーザー名/パスワードを使用してデフォルトとして設定します java.net.URL
オブジェクトを作成する- を作成し
java.net.HttpURLConnection
て呼び出すgetInputStream
- この時点で障害が発生します。
HttpURLConnection
デバッグをオンにすると、次のことがわかります。
- サーバーから返された初期認証の失敗(401.2)で、応答に「negotiate」と「NTLM」が含まれています。
- クライアントがNTLMトークンを作成し、それをサーバーに送り返します
- サーバーが500ステータスコードで戻る
ログのWindowsサーバーでは、要求のためだけにログファイルにユーザー名が含まれておらず、「匿名」を意味すると思われる「-」のみが含まれていることがわかります。
私の考えでは、Project Serverは、渡されて窒息しているNTLMトークンを好みません。これに関する多くの投稿に基づいて、NTLM(v1およびv2)はJava1.6内でサポートされると想定されています。
どんな助けでも大歓迎です...
UPDATE 6/20/12:ネットワークセキュリティのローカルセキュリティポリシー設定に問題を絞り込みました:NTLM SSPベース(RPCを含む)サーバーの最小セッションセキュリティ。Javaクライアントが失敗する原因となる設定は、「NTLMv2セキュリティが必要」です。1.6JDKでのNTLMサポートについて主張されていることに反します。
いくつかの参考文献: