У меня есть базовый веб-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.