인트라넷에 MVC 웹 응용 프로그램이 있으며 외부 파트너에게 보낼 FTP 서버에 파일을 만들 수 있기를 원합니다.ASP.NET MVC의 가장
가장에 대한 코드는 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 웹 서버를 사용하여 로컬로 작동하지만 테스트 서버의 IIS에 배포하면 작동하지 않습니다.
액세스가 거부되었습니다. 오류가 발생했습니다. 올바른 사용자가 가장 된 경우 오류의 원인은 무엇입니까?
이것은 정확히 내가 알아 내려고 시도한 것입니다. 나는 가장이 기계를 건너 가지 않는다는 것을 깨닫지 못했습니다. –
이봐, 나는 며칠 동안 가장을하려고했는데 갑자기 너는 내가 대표단과 함께 가야한다는 것을 깨달았다. 감사합니다. –