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 に関するエラーが表示されます。