으로 가장을 설정하면 두 개의 디렉토리에있는 파일의 수를 계산하는 매우 간단한 프로젝트를 만들었습니다. User1
은 Directory2
에 액세스 할 수 없으며 User2
은 Directory1
에 액세스 할 수 없습니다. 가장으로 인해 내 응용 프로그램을 호출하는 사용자에 따라 단 하나의 숫자 만 가져야합니다. 두 사용자 모두 관리자로 설정됩니다.첫 번째 이해를 위해 ASP.NET
그래서 Visual Studio 2015 (Windows 8.1에서 실행)에서 새 MVC 프로젝트를 만들고 Windows 인증을 사용하도록 선택했습니다. 응용 프로그램이 실행되고 ISS Express에서 내 컴퓨터 (Active Directory 없음)에서 User1
으로 전환하고 Internet Explorer에서 웹 사이트를 호출합니다 (예 : "통합 Windows 인증"이 설정에서 사용 가능). 이 설정을 사용하면 HttpContext.User.Identity
의 사용자는 User1
이고 WindowsIdentity.GetCurrent()
은 내 개발 사용자, 즉 Visual Studio에서 작업하는 사용자입니다.
WindowsIdentity winId = (WindowsIdentity)User.Identity;
WindowsImpersonationContext ctx = null;
try
{
ctx = winId.Impersonate();
// GetNumbers() tries to get the number of files for both directories
numbers = GetNumbers();
}
catch (Exception e)
{
}
finally
{
if (ctx != null)
{
ctx.Undo();
}
}
불행하게도, 나는 예외를 얻을 어떤 사람들은이 문제가 자신의 문제를 해결했다고 주장했습니다. https://kc.mcafee.com/corporate/index?page=content&id=KB56194 나를위한 것이 아닙니다. User1
과 내 사용자를 목록에 추가하고 컴퓨터를 다시 시작했습니다. 변경 없음.
https://msdn.microsoft.com/en-us/library/ms998351.aspx#paght000023_impersonatingusinglogonuser에 설명 된대로 별도의 로그인을 사용하면 가장을 할 수 있습니다. 단점은 매우 분명합니다. 사용자의 암호가 있어야하며 사용자가 이미 로그인 한 경우 왜 다시 로그인해야합니까? 나를 위해 그것을했다. 내 Web.config
<authentication mode="Windows" />
<authorization>
<deny users="?" />
</authorization>
내 프로젝트 설정은
이 내게로 큰 변화없이 새로운 프로젝트이지만, 단지 전성 검사에 대한 몇 가지 자세한 내용은 ...
- "익명 인증"은
false
- "Windows 인증 이온 관리 pipline 모드 "예상대로이 간단한 프로젝트 작업을 만들기 위해 변경하는 것에 대한
Integrated
어떤 제안이다"true
안부, 카슨