Мой вопрос сегодня:
Как настроить HttpClient, чтобы он мог аутентифицировать вызов, не беспокоя пользователя в MacOS?
(Консольное приложение .NET Core 2.2, работающее в качестве агента запуска в MacOS и вызывающее веб-API в IIS с включенными NTLM и Kerberos, по внутренней сети нашей компании)
Длинная история:
У меня есть приложение .NET Core, которое использует следующий метод для вызова веб-API:
var handler = new HttpClientHandler()
{
UseDefaultCredentials = true
};
var client = new HttpClient(handler)
{
BaseAddress = new Uri("https://MyWebAPI.MyCompanyName.com/")
};
string result = client.GetAsync("MyEndpointSubURL")
.Result.Content.ReadAsStringAsync().Result;
Когда я запускаю это на своем компьютере с Windows, приложение легко подключается и получает результат.
Однако, когда я запускаю это на Mac, я получаю исключение:
Interop+NetSecurityNative+GssApiException - GSSAPI operation failed with error
The provided name was not a mechanism name. (unknown mech-code 0 for mech unknown).
at Microsoft.Win32.SafeHandles.SafeGssNameHandle.CreatePrincipal(String name)
Есть идеи, что мне нужно изменить, чтобы это работало?
Мы отчаянно хотим не беспокоить пользователя подсказками (это должна быть служба фоновой синхронизации).
Напомним, это консольное приложение .NET Core 2.2, работающее в качестве агента запуска в MacOS. Веб-API, который он вызывает, - это веб-API Asp.NET, размещенный с IIS с включенными NTLM и Kerberos, и мне нужно только пройти IIS (веб-API сам по себе не использует никаких механизмов аутентификации / авторизации). API предоставляется только через внутреннюю сеть нашей компании, поэтому пользователь уже вошел в сеть.