WindowsサービスによってホストされているWCFサービスがあります。サービスが実行されているのと同じクレデンシャルを使用してクライアントマシンにログオンすると、クライアントアプリは成功しますが、他の有効なドメインアカウントでログインすると、例外が発生して失敗します。
テストしている2つのアカウントがあります。1つは通常のユーザーアカウントで、もう1つは管理者アカウントです。以下にリストされている4つの組み合わせすべてを試しました。
Server account
CLient RegUser AdminAcct
RegUser Succeeds Fails
AdminAcct Fails Succeeds
ご覧のとおり、クライアントとサーバーの両方が非管理者アカウントで実行されている場合はシステムが機能するため、管理者の問題になることはありません。どちらの場合も、サーバーログに何も起きていないという同じ例外がクライアントで発生します。
「SSPIの呼び出しに失敗しました。内部例外を参照してください」
内部の例外は、「ターゲットプリンシパル名が正しくない」です。
アカウントをSPNとして登録しました。
この問題はクライアントアプリからのみ発生しますが、VisualStudioにWCVFTestClient.exe
付属しているを使用した場合は発生しません。
WCFトレースログの例外は次のとおりです。
"System.ServiceModel.Security.SecurityNegotiationException、System.ServiceModel、Version = 4.0.0.0、Culture = neutral、PublicKeyToken =b77a5c561934e089"
メッセージ付き:
「リモート側で認証に失敗しました(ストリームは引き続き追加の認証試行に使用できる可能性があります)。」
スタックトレースは一番下にあります:何が問題なのですか?
スタックトレース
System.ServiceModel.Channels.WindowsStreamSecurityUpgradeProvider.WindowsStreamSecurityUpgradeAcceptor.OnAcceptUpgrade(Stream stream、SecurityMessageProperty&remoteSecurity)System.ServiceModel.Channels.StreamSecurityUpgradeAcceptorBase.AcceptUpgrade(Stream stream)System.ServiceModel.Channels.InitialServerConnectionReader.UpgradeConnection(IConnection connection、StreamUpgradeAcceptor upgradeAccept System.ServiceModel.Channels.ServerSessionPreambleConnectionReader.ServerFramingDuplexSessionChannel.OnOpen(TimeSpan timeout)System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)System.ServiceModel.Dispatcher.ChannelHandler.OpenAndEnsurePump()System.Runtime.ActionItem.DefaultActionItem.TraceAndInvoke() System.Runtime.ActionItem.CallbackHelper。InvokeWithoutContext(Object state)System.Runtime.IOThreadScheduler.ScheduledOverlapped.IOCallback(UInt32 errorCode、UInt32 numBytes、NativeOverlapped * nativeOverlapped)System.Runtime.Fx.IOCompletionThunk.UnhandledExceptionFrame(UInt32 error、UInt32 bytesRead、NativeOverlapped * nativeOverlapped .PerformIOCompletionCallback(UInt32 errorCode、UInt32 numBytes、NativeOverlapped * pOVERLAP)NativeOverlapped * pOVERLAP)NativeOverlapped * pOVERLAP)