这三台机器都在同一个域
理想情况下,WSHttpBinding会自动将安全上下文从应用程序传输到WCF服务,因此它应该能够在共享位置编写文件。因为,如果我们直接尝试将文件从机器1上的应用程序写入Machien 3共享位置,则成功。
但令我们惊讶的是,它无法通过服务将文件写入共享位置。我们得到“拒绝访问”
正如我所说,我们正在使用WSHttpBinding,理想情况下,用户上下文已转移到服务。在客户端,即机器1中,模拟级别设置为System.Security.Principal.TokenImpersonationLevel.Impersonation;因此,网络服务可以将自己模拟为Domain \ user1。这足以写入第三台机器的文件夹吗?
或者我们应该将客户端模拟级别设置为System.Security.Principal.TokenImpersonationLevel.Delegation? (我们尝试了两种,但没有用)
另外,另一条信息: 机器2“被委托信任”。在域控制器中为此计算机设置了SPN。
操作合同声明为
[OperationBehavior(Impersonation = ImpersonationOption.Required)]
public void WriteData(string content)
{
}
我们仍然面临这个问题。