мое веб-приложение ASP.NET использует проверку подлинности Windows в нашей интрасети. Я хочу, чтобы он мог отправлять http-запрос на стороне сервера другому серверу в том же домене, для которого также требуется проверка подлинности Windows.
При выполнении дополнительного запроса я следовал инструкциям по временному олицетворению аутентифицированного пользователя:
http://msdn.microsoft.com/en-us/library/ff647404.aspx
Используя такой код:
using System.Security.Principal;
// Obtain the authenticated user's Identity
WindowsIdentity winId = (WindowsIdentity)HttpContext.Current.User.Identity;
WindowsImpersonationContext ctx = null;
try
{
// Start impersonating
ctx = winId.Impersonate();
// Now impersonating
// Access resources using the identity of the authenticated user
var request = WebRequest.Create("http://intranet/secureapp");
request.Credentials = CredentialCache.DefaultCredentials;
var response = request.GetResponse();
using (var streamReader = new StreamReader(response.GetResponseStream()))
{
Response.Write(streamReader.ReadToEnd());
}
}
// Prevent exceptions from propagating
catch
{
}
finally
{
// Revert impersonation
if (ctx != null)
ctx.Undo();
}
// Back to running under the default ASP.NET process identity
Но, к сожалению, я всегда получаю несанкционированную ошибку 401.
Нужно ли настраивать наш веб-сервер с активным каталогом, чтобы он мог делегировать прошедшего проверку пользователя (может быть любой из примерно 200 пользователей, поэтому не нужно ничего делать 200 раз :))? Если да, может кто-нибудь сказать мне, как это сделать?