独自のワークグループにあるサーバーに WCF サービスをセットアップしました。企業ドメインに存在するクライアントから TCP/IP 接続を確立しようとしました。接続を開こうとすると、次のメッセージとともに SecurityNegotiationException が発生します。
「認証中にリモート側のセキュリティ要件が満たされませんでした。ProtectionLevel および/または ImpersonationLevel を増やしてみてください。」内部例外の読み取り:「ネットワーク ログオンに失敗しました」
この問題について何人かの同僚と話し、Google で調査を行った結果、問題は、クライアントが企業ネットワークのログインとパスワードを使用してサーバーにログオンしようとしていることにあるという結論に達しました。サーバーは企業ネットワークの一部ではないため、私の企業 ID を認識せず、ログイン/接続試行を拒否します。この分析が正しいかどうか、私にはわかりません。
Google の結果によると、おそらく解決策は、サーバー マシンに存在するユーザー アカウントを偽装する必要があることです。-- また、ユーザーのなりすましを示すこの codeproject の記事も偶然見つけました。サーバー上の唯一のアカウントはパスワードのない管理者であるため、コンピューターの IP アドレスとしてドメインを「10.0.0.11」、ユーザー名を「管理者」、パスワードを「」としてみました。 http://www.codeproject.com/KB/dotnet/UserImpersonationInNET.aspx?display=Print 残念ながら、次のメッセージで失敗します。
「ログオン失敗: 不明なユーザー名または間違ったパスワード」
問題に対するもう 1 つのヒント: クライアントとサーバーが両方とも企業ネットワーク上のマシンである場合、接続の問題はまったくありません。
エラーを解決してサーバーへの接続を完了するにはどうすればよいですか? ベストプラクティスではありませんが、セキュリティを削除しても問題ないので、このプロジェクトを前進させ続けることができます