Windows Server 2008의 제한 위임 및 IIS 7에 문제가 있습니다.
가장을 사용하여 SQL 보고서 서버에 액세스하는 웹 응용 프로그램이 있습니다. 이것은 신뢰할 수있는 위임 및 제한 위임과 함께 IIS 6에서 잘 작동했습니다. 그러나 IIS 7에 문제가 있습니다.
IIS 7에서 응용 프로그램 풀이 NetworkService로 실행되고 제한 위임이 구성된 상태에서 IIS 7의 경우 응용 프로그램 풀이 로컬 시스템으로 실행되면 보고서 서버에서 HTTP 401 Unauthorized 오류가 발생합니다. 가장이 잘 작동합니다.
클래식 파이프 라인과 통합 파이프 라인에서 테스트했습니다. 이 문제를 시뮬레이트하는 매우 간단한 테스트 페이지의 코드는 다음과 같습니다. Windows 2003의 IIS 6 서버에서 동일한 테스트 페이지를 실행하면 정상적으로 작동합니다. 보안 정책, IIS 구성 또는이 기능에 영향을 줄 수있는 서버 기능 및 역할에 대한 아이디어가 있습니까?
Kerberos가 제대로 작동하고 제한된 위임 구성이 올바른지 확인했습니다.
private void testImpersonation()
{
string url = "http://testsvr7/reportserver/";
System.Security.Principal.WindowsIdentity user =
(System.Security.Principal.WindowsIdentity)Context.User.Identity;
System.Security.Principal.WindowsImpersonationContext WICTX = null;
StringBuilder results = new StringBuilder();
try
{
if (user != null)
{
WICTX = user.Impersonate();
results.AppendFormat("<br />Impersonating, user: {0}",
System.Security.Principal.WindowsIdentity.GetCurrent().Name);
System.Net.HttpWebRequest myHttpWebRequest =
(HttpWebRequest)WebRequest.Create(url);
// Assign the credentials of the user being impersonated.
myHttpWebRequest.Credentials = CredentialCache.DefaultCredentials;
System.Net.HttpWebResponse myHttpWebResponse =
(HttpWebResponse)myHttpWebRequest.GetResponse();
results.AppendFormat("<br />Authentication successful - {0}, {1}",
url, CredentialCache.DefaultCredentials);
}
}
catch (Exception ex)
{
results.AppendFormat("<br />Exception: {0}", ex.Message);
}
finally
{
if (WICTX != null)
WICTX.Undo();
}
Response.Write(results.ToString());