WindowsサービスでホストされるWCFサービスを作成しました。デプロイされているか、ローカルホストが正常に機能している場合、クライアントアプリはそれを消費できます。
Windowsサービスのログオン設定を変更してドメインユーザーを設定すると(デフォルトの「ローカルシステム」から変更)、クライアントアプリはサービスを利用できなくなります。私が得る例外は
A call to SSPI failed
内部の例外や詳細はありません。これを修正するために、有効なサービス名チェックを取得するために、クライアントアプリリクエストでUPNを設定しようとしました。これは、クライアント側で、コードを介して、エンドポイントにIDを設定して行われます。
string uri = "myServiceUri";
EndpointIdentity identity = EndpointIdentity.CreateSpnIdentity("user@domain");
EndpointAddress epa = new EndpointAddress(uri, identity, new AddressHeader[] { });
非常に奇妙な振る舞いがあります。
クライアントリクエストで正確なUPNを設定すると、たとえば「user @ domain」とすると、新しい例外が発生します(内部例外なし、詳細なし)
The following remote identity failed verification: 'user@domain'
クライアントリクエストで他の文字列をUPNとして設定すると、正常に機能します。たとえば、「XXXuser @ domainXXX」、「toto」、さらにはString.Emptyなどです。
サーバー側では、デフォルトの動作、つまりUPNチェック(SPNもDNSもなし)を維持するように構成ファイルにIDノードを設定しませんでした。
つまり、サービス/ユーザー名のチェックは、クライアントアプリの設定が間違っている場合にのみ機能するようです。
親愛なるコミュニティ、このトピックについてあなたの助けをいただければ幸いです。
ありがとう