1

独自のワークグループにあるサーバーに 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 つのヒント: クライアントとサーバーが両方とも企業ネットワーク上のマシンである場合、接続の問題はまったくありません。

エラーを解決してサーバーへの接続を完了するにはどうすればよいですか? ベストプラクティスではありませんが、セキュリティを削除しても問題ないので、このプロジェクトを前進させ続けることができます

4

2 に答える 2

2

詳細を把握するまでは、セキュリティを無効にすることをお勧めします。セキュリティモードを「なし」に設定して、サーバー側で新しいバインディング構成を作成する必要があります。便宜上、「NoSecurity」と名付けます。この構成には、エンドポイントで使用するのと同じタイプ (wsHttpBinding など) が必要です。次に、エンドポイントの bindingConfiguration プロパティを「NoSecurity」に設定します。

クライアント構成を更新すると、準備完了です。

于 2009-03-08T10:54:44.670 に答える