Не удалось войти в систему для пользователя 'NT AUTHORITY \ ANONYMOUS LOGON в Visual Studio, даже если настроена учетная запись Azure - PullRequest
0 голосов
/ 25 сентября 2019

Мы используем AD-интерактивную аутентификацию для подключения к SQL.Учетная запись настроена в диспетчере учетных записей VS с помощью облачного обозревателя и обозревателя объектов SQL Server, которые могут подключаться к ресурсу базы данных Azure SQL.Однако, когда приложение пытается подключиться в режиме отладки, мы видим ошибку «Ошибка входа пользователя NT NTHORITY \ ANONYMOUS LOGON».Мы несколько раз пытались удалить и добавить учетную запись Azure и перезапустить Visual Studio.

Это копия строки подключения "Источник данных = xxxxxxxxx.database.windows.net; Исходный каталог = xxxxxx; Интегрированная безопасность =False; время ожидания соединения = 30; Encrypt = True; TrustServerCertificate = False; ApplicationIntent = ReadOnly; MultiSubnetFailover = False "

Язык: c # Framework: ядро ​​dotnet 2.2 Библиотека: System.Data.SqlClient.SqlConnection

код:

_sqlAccessToken = (new AzureServiceTokenProvider()).GetAccessTokenAsync("https://database.windows.net/").Result;
  using (var conn = new SqlConnection(connectionString) { AccessToken = _sqlAccessToken })
            {
                var rawRecords = conn.Query<TModel>($"{dbSchema.ToString().ToLower()}.{storedProcName}", param, commandType: CommandType.StoredProcedure, commandTimeout: _commandtimeout).AsList();


 ...

_sqlAccessToken значение заполняется.Но VS вызывает это исключение System.Data.SqlClient.SqlException: «Ошибка входа для пользователя« NT AUTHORITY \ ANONYMOUS LOGON ». '

Ответы [ 2 ]

0 голосов
/ 25 сентября 2019

Проблема заключалась в том, что у меня были установлены Visual Studio 2017 и 2019 с разными учетными записями Azure для каждого.Мой VS 2019 собирал учетные данные Azure из установки 2017 года.Когда я открыл VS2017, вышел из всех учетных записей, тогда проблема была решена в VS2019

0 голосов
/ 25 сентября 2019

При работе в отладчике идентификация приложения совпадает с идентификацией пользователя, работающего с Visual Studio.Это не будет пользователь с идентификатором службы Azure.Вам необходимо использовать обычное пользовательское соединение (вход в SQL является единственным вариантом с SQL (управляемым) Azure, у управляемых экземпляров может быть больше параметров).

Идентификатор службы / приложения Azure существует только для определенных ресурсов, работающих в Azure (это может включать виртуальные машины, но только для IIRC, где системный идентификатор ОС виртуальной машины).

Примечание.используя AzureServiceTokenProvider(), вы пытаетесь получить текущий, если он есть, идентификатор службы Azure.Это не удостоверение Active Directory (AD) или Azure Active Directory (AAD).

Дополнительно

Существует опция VS для использования удостоверения Azure.,См. документацию (для KeyVault, но она также использует удостоверение службы Azure, поэтому должно применяться).

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