1

WCF サービスに接続する Java クライアントがあります。このサービスは、ホスト上で別のドメイン ユーザーとして (つまり、ローカル サービスやネットワーク サービスとしてではなく) 実行するように構成されています。サービスは、その WSDL で userPrincipalName を発行します。

SpNego トークン交換中に、クライアントで次の例外が発生します

Defective token detected (Mechanism level: AP_REP token id does not match!)
This is the call stack:
    at sun.security.jgss.spnego.SpNegoContext.initSecContext(SpNegoContext.java:450)
    at sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:230)
    at sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:162)

ローカル システム アカウントで実行するように WCF サービスを構成すると、SpNego トークン交換が機能します。ローカル システム アカウントで実行されていないサービスのコードを変更する必要はありますか?

更新-1

C# クライアントを WCF サービスに接続してデバッグを行った後、C# クライアントがMS-SPNGと呼ばれる SpNego プロトコルの修正版を使用していることがわかりました。Java 6 はこれをサポートしていますか? トークンを調べると、サポートされていないメカニズム 1.2.840.113554.1.2.2.3 に関するエラーが表示されます。

4

1 に答える 1

1

これらのリンクは、何が起こっているかを説明しています。MS には SpNego プロトコルの拡張機能があり、WCF サービスをユーザーとして (つまり、ローカル サービスなどとしてではなく) 実行すると作動します。 これは、新しいプロトコルの MS 仕様です 回避策を説明する openjdk のドキュメントを次に示します。

于 2011-11-16T02:18:47.187 に答える