К сожалению, я не смог воспроизвести вашу проблему, олицетворение работает нормально для меня при использовании этого кода:
WindowsIdentity identity = WindowsIdentity.GetCurrent();
using (identity.Impersonate())
{
HttpWebRequest request = (HttpWebRequest) WebRequest.Create("https://my-address");
request.UseDefaultCredentials = true;
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
}
Я проверял это с помощью. NET Только Framework, но так как вы уже попытался настроить Credentials
вручную, я думаю, это не проблема. NET Основная проблема подражания, о которой упоминалось в одном из комментариев.
Так что я думаю, что проблема связана с адресом, который вы пытаетесь для доступа.
Возможно, проблема в перенаправлении, которое я не смог проверить, но вы можете попробовать решение из этого ответа. Вы должны использовать request.AllowAutoRedirect = false
, поскольку значением по умолчанию является true
, и в этом случае заголовок авторизации очищается при автоматическом перенаправлении (MSDN Свойство AllowAutoRedirect ).
В противном случае вы можете также хотите попробовать использовать request.ImpersonationLevel = TokenImpersonationLevel.Delegation
(MSDN ImpersonationLevel Property ) или request.PreAuthenticate = true
(MSDN PreAuthenticate Property ).
Как я уже сказал, я не смог воспроизведите проблему, так что это всего лишь некоторые идеи, которые могут (или не могут) работать на вас ...