Windows Аутентификация: сбой входа для пользователя 'DOMAIN \ MACHINE $' - PullRequest
0 голосов
/ 11 марта 2020

Я видел много сообщений с точно такой же ошибкой:

Microsoft.Data.SqlClient.SqlException (0x80131904): Ошибка входа для пользователя ' DOMAIN \ MACHINE $ ' .

, но происхождение из этого исключения может быть совершенно разным для каждого случая, вот мое объяснение:

Я создаю API с использованием asp. net В ядре 3.1 идея заключается в том, что только некоторые пользователи активного каталога имеют доступ к базе данных за кулисами.

При запуске кода из Visual Studio и IIS Express он подключается нормально, процесс использует мой пользователь активного каталога по умолчанию подключается.

При публикации API на IIS моего локального хоста я получаю следующее:

  • Подключение из браузера (Firefox) Я получаю исключение, пользователь 'DOMAIN \ MACHINE $', я даже не получаю запрос на ввод учетных данных.

  • Подключение от Почтальон , на Вкладка Auth Я устанавливаю тип NTLM Authentication, имя пользователя, пароль и d omain. Кажется, не используется вообще, поскольку я получаю то же исключение, что и с Firefox.

  • Подключение из консольного приложения , которое я создал для целей тестирования, могу Получите данные идеально, процесс консоли, кажется, действительно использует учетные данные текущего пользователя из windows.

Вот код из консольного приложения:

static async Task<string> CallWebApiProtectedAsync(string webApiUrl) 
{
    try
    {
        var uri = new Uri(webApiUrl);
        var credentialsCache = new CredentialCache { { uri, "NTLM", CredentialCache.DefaultNetworkCredentials } };
        var handler = new HttpClientHandler { Credentials = credentialsCache };
        var httpClient = new HttpClient(handler) { BaseAddress = uri, Timeout = new TimeSpan(0, 0, 10) };
        httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
        var response = httpClient.GetAsync(webApiUrl).Result;
        return await response.Content.ReadAsStringAsync();
    }
    catch (Exception ex)
    {
        Console.WriteLine("Exception in CallWebApiProtectedAsync("+webApiUrl+"):\n" + ex.Message);
        return null;
    }
}

Моя цель - заставить API работать также для Postman и Firefox, чтобы протестировать его более гибко.

Возможно, я испортил какую-либо настройку из самого приложения ASP. NET или из IIS, совсем не уверен, я новичок в этом ... вот некоторые настройки, которые могут поможет вам поймать root всего этого.

ASP. NET Строка подключения к базовому API:

Сервер = SERVERNAME; База данных = DATABASENAME; Trusted_Connection = False ; Integrated Security = SSPI; ");

Я также пытался установить в классе автозагрузки некоторые параметры, такие как:

app.UseAuthorization();
app.UseAuthentication();
services.AddAuthentication(HttpSysDefaults.AuthenticationScheme);
services.AddAuthentication(IISDefaults.AuthenticationScheme);
services.Configure<IISServerOptions>(options =>
{
    options.AutomaticAuthentication = false;
});        
services.Configure<IISOptions>(options =>
{
    options.ForwardClientCertificate = true;
});

Но все равно те же результаты.

IIS Конфигурация для аутентификации: Windows Аутентификация включена. Остальные записи отключены (Anonymous, Basi c и Digest).

Любая идея или предложение будут весьма оценил:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...