SPNEGO認証プロトコルを実装するMicrosoftサーバーにアクセスするときに、Windowsで実行されているJava 6クライアントがNTLMを介して認証できるかどうかを誰かが知っていますか?
私の理解では、Windowsで実行されているJava 6にはSPNEGOのサポートが組み込まれていますが、Kerberos認証が不可能な場合、Java実装はNTLM認証を試行しないようです。Sunのドキュメントで提供されているAuthenticatorの例は、サーバーがWWW-Authenticate:Negotiateを送信したことに応答して、401Unauthorizedエラーで失敗します。
テスト環境の説明は次のとおりです。
ターゲットサーバー:
- Windows 2008 R2スタンドアロンサーバー(ADドメインの一部ではありません)
- WCFを使用して実装されたMicrosoftSOAPサービス
- WCFはSPNEGO認証用に構成されています(KerberosおよびNTLM)
- WCFサーバーを再構成して他の認証モードをサポートすることはできません:(
クライアントマシン:
- Windows 7 64ビットスタンドアロンワークステーション(ドメインの一部ではありません)
- SunSPNEGOの例を実行しているJavaSE6クライアント
最終的な目標は、ApacheCXF2.4.0を使用してWCFサーバーでSOAPサービスを呼び出すことです。CXFとSOAPの複雑さを追加する前に、認証の問題を解決するために、単純なJavaテストアプリケーションを使用してサーバーからWSDLを取得しようとしていました。
FWIW-Windowsサーバーのローカル管理者ログインを使用してIEからWCFサーバーにアクセスできます。また、特別な認証設定なしでDelphiXESOAPクライアントを作成することができました。Delphi SOAPクライアントは、内部でWinInetを使用します。