6

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を使用します。

4

1 に答える 1

2

Java の SPNEGO が Kerberos に対応できるのは、NTLM が独自のレガシー MS テクノロジであるためです。あなたの場合のように、ターゲット マシンがドメインの一部でない場合は、運が悪いです。可能であれば、DIGEST-MD5 認証に切り替える必要があります。

于 2011-07-24T13:20:05.317 に答える