Попытка вызвать API из контроллера с помощью HttpClient, и API не распознает пользователя как аутентифицированного и вошедшего в систему. При вызове API из JS у меня нет проблем. Я заметил, что HttpClient отправлял только через HTTP 1.1, поэтому я обновил настройки до версии 2.0 с флагом DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER
, но это не имело значения. Я пробовал все комбинации свойств HttpClientHandler, включая UseCookies, и запрос никогда не аутентифицируется.
using (var handler = new HttpClientHandler {UseDefaultCredentials = true})
{
using (var httpClient = new HttpClient(handler))
{
var response = httpClient.GetStringAsync(new Uri($"https://localhost:64366/api/")).Result;
}
}
В будущем перейдет на аутентификацию на основе токенов, но сейчас хотелось бы понять, почему существует разница между вызовом API из C# и JS. Это все HTTPS на локальном хосте с использованием asp net core 2.2.
UseDefaultCredentials
всегдаtrue
по умолчанию, и это только для использования учетных данных пользователя, запускающего приложение, которое не имеет ничего общего с самим веб-приложением. - person Camilo Terevinto   schedule 27.01.2019