.net core 用户登录失败';NT授权\在Visual Studio中匿名登录,即使已配置Azure帐户

.net core 用户登录失败';NT授权\在Visual Studio中匿名登录,即使已配置Azure帐户,.net-core,azure-active-directory,azure-sql-database,visual-studio-2019,.net Core,Azure Active Directory,Azure Sql Database,Visual Studio 2019,我们正在使用AD交互身份验证连接到sql。该帐户已在VS帐户管理器中配置,云资源管理器和sql server对象资源管理器能够连接到azure sql数据库资源。但是,当应用程序尝试在调试模式下连接时,我们会看到“用户'NT AUTHORITY\ANONYMOUS LOGON'登录失败”错误。我们多次尝试删除和添加azure帐户,并重新启动visual studio 这是连接字符串“数据源=xxxxxxxxx.database.windows.net;初始目录=xxxxxx;集成安全性=Fals

我们正在使用AD交互身份验证连接到sql。该帐户已在VS帐户管理器中配置,云资源管理器和sql server对象资源管理器能够连接到azure sql数据库资源。但是,当应用程序尝试在调试模式下连接时,我们会看到“用户'NT AUTHORITY\ANONYMOUS LOGON'登录失败”错误。我们多次尝试删除和添加azure帐户,并重新启动visual studio

这是连接字符串“数据源=xxxxxxxxx.database.windows.net;初始目录=xxxxxx;集成安全性=False;连接超时=30;加密=True;信任服务器证书=False;应用程序内容=ReadOnly;多子网故障切换=False”的副本

语言:c# 框架:dotnetcore2.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();


 ...
\u sqlAccessToken=(新AzureServiceTokenProvider()).GetAccessTokenAsync(“https://database.windows.net/三、结果;
使用(var conn=new SqlConnection(connectionString){AccessToken=\u sqlAccessToken})
{
var rawRecords=conn.Query($“{dbSchema.ToString().ToLower()}.{storedProcName}”,参数,commandType:commandType.StoredProcedure,commandTimeout:_commandTimeout.).AsList();
...
_sqlAccessToken值已填充。但VS引发此异常
System.Data.SqlClient.SqlException:'用户'NT AUTHORITY\ANONYMOUS LOGON'登录失败。

在调试器下运行时,应用程序的标识与运行Visual Studio的用户的标识相同。这将不是具有Azure服务标识的用户。您需要使用常规用户连接(SQL登录是Azure(托管)SQL的唯一选项,托管实例可能有更多选项)

Azure服务/应用程序标识仅存在于Azure中运行的某些资源中(这可能包括VM,但仅适用于IIRC,其中VM操作系统的系统标识)

注意:使用
AzureServiceTokenProvider()
您试图获取当前的Azure服务标识(如果有)。这不是Active Directory(AD)或Azure Active Directory(AAD)标识

附加的


有一个选项是VS以使用Azure标识。请参阅(对于KeyVault,但也使用Azure服务标识,因此应适用).

问题是,我在Visual Studio 2017和2019中分别安装了不同的Azure帐户。我的2019 VS从2017年安装中获取Azure凭据。当我打开VS2017,注销所有帐户后,问题在VS2019中得到解决。

您是否添加了用作Azure SQL AD管理员的用户?关于how若要配置它,请参阅
\u sqlAccessToken
非空并不意味着它已找到Azure服务标识,您还需要检查其值。@JimXu,这是一个企业帐户。我们不能只将用户设置为AD管理员。@Richard,该标识包含一个令牌字符串。是的,我在Visual Studio中配置了Azure标识。我t从昨天开始工作,突然停止工作。