2

利用シーン 3 台のマシンはすべて同じドメインにあります

  • マシン 1 - user1 の下で実行されているアプリケーションがあり、そこから要求が生成されます
  • マシン 2 - WSHttpBinding を使用して、WCF サービスをホストする Network Service の下で実行される Windows サービスです。
  • マシン 3 - user1 がフォルダーへの書き込み権限を持つ共有フォルダー

理想的には、WSHttpBinding はセキュリティ コンテキストをアプリケーションから WCF サービスに自動的に転送するため、共有の場所にファイルを書き込むことができるはずです。なぜなら、Machine 1 のアプリケーションから Machien 3 Share Location にファイルを直接書き込もうとすると、成功するからです。

しかし、驚いたことに、サービスを介して共有場所にファイルを書き込むことができません。「アクセスが拒否されました」というメッセージが表示されます

前述したように、WSHttpBinding を使用しており、理想的にはユーザー コンテキストが Service に転送されます。クライアント、つまりマシン 1 では、偽装レベルは System.Security.Principal.TokenImpersonationLevel.Impersonation として設定されます。そのため、Network Service は Domain\user1 として自身を偽装できます。3台目のマシンのフォルダに書き込むにはそれで十分ですか?

それとも、クライアント偽装レベルを System.Security.Principal.TokenImpersonationLevel.Delegation として設定する必要がありますか? (両方試しましたがダメでした)

また、別の情報: マシン 2 は "委任に対して信頼されています"。SPN は、ドメイン コントローラーでこのマシン用にセットアップされます。

操作コントラクトは次のように宣言されます。

[OperationBehavior(Impersonation = ImpersonationOption.Required)] 
public void WriteData(string content) 
{ 

}

そして今もなお、私たちはこの問題に直面しています。

4

1 に答える 1

1

そのためには委任が必要です。なりすましは、マシン2のローカルスコープのみを持ちます。

于 2011-06-24T08:25:27.483 に答える