Мне нужно сделать веб-запрос от WebServiceA, работающего от имени ServiceAccountA, к WebServiceB и сделать так, чтобы он аутентифицировался с использованием NTLM. Обе веб-службы являются API-интерфейсами DotNet Core 2.2, размещенными в IISServiceAccountA - это учетная запись службы, установленная в пуле приложений IIS. Просто чтобы быть ясным, я не делаю олицетворение.
Я использую библиотеку RestSharp для выполнения запросов HttpClient.
См. Аутентификатор NTLM: https://github.com/restsharp/RestSharp/blob/master/RestSharp/Authenticators/NtlmAuthenticator.cs
NTLMАутентификатор с RestSharp использует System.Net. CredentialCache.DefaultCredentials . Это работает локально, но после того, как я развернул веб-API dotnet core 2.2 на сервере Windows и разместил приложение в IIS (в процессе) CredentialCache.DefaultCredentials больше не работает, как ожидалось. WebServiceB возвращает 401.1, и когда я проверяю журналы IIS, после запроса вызова учетная запись службы не передается.
Я пытался использовать System.Net.CredentialCache.DefaultNetworkCredentials, но у меня возникла та же проблема. Я подтвердил, что WebServiceB правильно работает с аутентификацией Windows, обратившись к службе напрямую через веб-браузер, и он очень хорошо аутентифицирует мою личную идентификацию Windows.
В диспетчере задач я вижу, что рабочий процесс IIS действительно выполняется какправильная учетная запись службы. Есть ли лучший или другой способ извлечь объект ICredentials из текущего запущенного процесса?