我在Intranet一个MVC的Web应用程序,并希望能够创造我们的FTP服务器上的文件发送给外部合作伙伴。
用于模拟代码使用WindowsImpersonationContext。
System.Security.Principal.WindowsImpersonationContext impersonationContext;
impersonationContext = ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate();
StreamWriter sw = System.IO.File.CreateText("PathOnFTPServer");
sw.Write("data");
impersonationContext.Undo();
这里是正在发生的事情和我的问题的原因:
预模拟
User.Identity.Name:我的Windows凭据]
。System.Security.Principal.WindowsIdentity.GetCurrent()名称:NT AUTHORITY \ NETWORK SERVICE
邮政模拟
User.Identity:我的Windows凭据]
GetCurrent.Name:我的Windows凭据]
冒充撤消
User.Identity:我的Windows凭据]
GetCurrent.Name:NT AUTHORITY \ NETWORK SERVICE
所以,我冒充之前,当前用户是系统帐户,但模拟之后,它使用其有权在FTP服务器上创建的文本文件我的Windows域帐户。 代码工作在本地使用Visual Studio的Web服务器,但不是我我们的测试服务器上IIS部署。
我发现了一个拒绝访问错误。 会是什么错误的原因,正确的用户被假冒时?