Почему HTTPClient отправляет пустой sid при использовании в приложении Blazor с ядром do tnet? - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть базовый веб-API do tnet, работающий на IIS. У меня также есть приложение Blazor на стороне сервера, работающее в IIS на том же сервере.

API работает в своем собственном пуле приложений в качестве учетной записи службы. Эта учетная запись служб имеет доступ к API.

На странице в приложении Blazor я вызываю API следующим образом:

var client = new RestClient("https://myApi.mydomain/v1")
{
  Authenticator = new NtlmAuthenticator()
};
var request = new RestRequest("licenses", DataFormat.Json);
var response = await client.ExecuteAsync<List<Licenses>>(request);
return response.Data;

Но на стороне API я получаю 401 0 0 20, за которым следует 401 1 3221225581 0. Я посмотрел код 3221225581 после преобразования в шестнадцатеричный код, и это был NULL SID.

В IIS у меня отключен анонимный доступ и Windows Auth Enabled. Я контролирую доступ на контроллерах API с помощью атрибута [Authorize].

Единственный способ заставить это работать - это включить анонимный доступ и удалить атрибут [Authorize].

Следует также отметить, что другое приложение, написанное на полной платформе. NET 4.x, использующее те же вызовы HttpClient, может успешно работать с API.

1 Ответ

0 голосов
/ 30 апреля 2020

Оказывается, нам нужно было отключить проверку Loopback. Я использовал ответ на этот вопрос здесь: CredentialCache.DefaultCredentials не учитывает учетные данные пула приложений IIS с do tnet core 2.2

...