Ошибка входа. Вход из ненадежного домена и не может использоваться с аутентификацией Windows

Мои веб-страницы находятся на защищенном сервере (https), и я пытаюсь подключить базу данных SQL Server 2008, которая является обычным сервером. Я пишу connectionstring на самой странице, а не в файле web.config. И я получаю следующую ошибку: -

System.Data.SqlClient.SqlException: Login failed.
The login is from an untrusted domain and cannot be used with Windows authentication.

Пожалуйста, помогите, как я могу подключить его, должен ли я сделать некоторые веб-службы для него.

мой код выглядит следующим образом:

public void FillCity()
{
    SqlConnection con = new SqlConnection();
    con.ConnectionString = "integrated security=SSPI;data source=dev-fcb; user id=sa;password=password;" 
    +"persist security info=False;database=mediapro";
    con.Open();
    SqlDataAdapter da = new SqlDataAdapter();
    da.SelectCommand = new SqlCommand("select * from StateCityMaster where IsActive='1' order by CityName", con);
    DataSet ds = new DataSet();
    da.Fill(ds);
    string CityName = string.Empty;
    if (ds.Tables[0].Rows.Count > 0)
    {
        CityName = ds.Tables[0].Rows[0]["CityName"].ToString();
    }
    DataSet dset = new DataSet();
    da.Fill(dset);
    if (dset.Tables[0].Rows.Count > 0)
    {
        drpCity.DataSource = dset;
        drpCity.DataTextField = "CityName";
        drpCity.DataValueField = "CityName";
        drpCity.DataBind();
    }
    drpCity.Items.Insert(0, new ListItem("--Select--", "0"));
    con.Close();
}

Ответы

Ответ 1

Строка подключения сообщает об использовании встроенного SSPI безопасности, который будет использовать учетные данные Windows.

Установите Integrated Security в false, если вы хотите указать имя пользователя и пароль.

Кроме того, рассмотрите возможность размещения вашей строки соединения внутри файла web.config - это более безопасное и многоразовое.

Из http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring(v=VS.100).aspx:

Если в соединении указано false, идентификатор пользователя и пароль. Если значение true, текущие учетные данные учетной записи Windows используются для аутентификации. Признанные значения: true, false, yes, no и sspi (настоятельно рекомендуется), что эквивалентно true. Если указаны идентификатор пользователя и пароль, а для параметра "Интегрированная безопасность" установлено значение "Истина", идентификатор пользователя и пароль будут игнорироваться, и будет использоваться функция "Интегрированная безопасность".

Ответ 2

Старый вопрос, и мои симптомы немного разные, но та же ошибка. Моя строка подключения верна (встроенная защита, а я не предоставляю пользователю и pwd) с data source, установленным на 127.0.0.1. Он работал отлично в течение многих лет.

Но недавно я добавил строку в статический файл хоста для тестирования (C:\Windows\System32\drivers\etc\hosts)

127.0.0.1           www.blablatestsite.com

Удаление этой строки и ошибка исчезла.

У меня есть ключ к этой статье (https://support.microsoft.com/en-gb/kb/896861), в котором говорится об именах хостов и loopback.

Другое возможное исправление (если вам нужно сохранить эту строку в файле hosts) - использовать имя хоста (например, MYSERVER01) вместо 127.0.0.1 в строке data source строки подключения.

Ответ 3

Для будущих гуглеров:

Если вам нужен Integrated Security и вы получаете эту ошибку, возможно, вы используете local account вместо domain account.

Я сталкивался с этой запущенной Visual Studio локально и пытался подключиться к базе данных на другом компьютере. Обходной путь состоял в том, чтобы запустить Visual Studio от имени другого пользователя, приглашение не сработало, но выполнение приведенной ниже команды сработало (обязательно замените DOMAIN\USER, и вас попросят предоставить учетные данные):

runas /netonly /user:DOMAIN\USER "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\devenv.exe"

Ответ 4

Я создал новый сайт Asp.Net Core MVC, и у меня была такая же ошибка. Я пытался подключиться к базе данных своей компании при подключении к сети через VPN. Вот что у меня сработало:

Вместо

"DevConnection": "Server=DevDBServer;Database=MyDatabase;User ID=some_userid;Password=some_password;Integrated Security=SSPI;Trusted_Connection=True;"

Я использовал

"DevConnection": "Server=DevDBServer;Database=MyDatabase;User ID=some_userid;Password=some_password;Integrated Security=False;Trusted_Connection=False;"

Главное изменение состояло в том, чтобы убедиться, что Trusted_Connection = False, что соответствует сообщению об ошибке. Обычно я бы не использовал ненадежное соединение. В этом случае я подключался к базе данных dev/test, так что все в порядке.