我已按照this教程使用托管身份从App Service保护Azure SQL数据库连接。
一切都在Azure中按预期工作,但是当我尝试在本地调试代码时,打开连接时出现以下错误消息。
Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.
我发现很少有人提及他们提到我们可以使用“ Azure服务身份验证”扩展在本地进行调试。
我已经以'Azure Service Authentication'
扩展名登录了我的Azure帐户。但是,仍然出现错误。
public IActionResult GetData()
{
var result = "connection opened.";
var test = config.GetSection("ConnectionStrings")["MyDbConnection"];
SqlConnection sql = new SqlConnection();
sql.ConnectionString = test;
sql.AccessToken = (new AzureServiceTokenProvider()).GetAccessTokenAsync("https://database.windows.net/").Result; //No issues while fetching the token.
try
{
//Getting exception here when running locally...
//Same code is working in Azure Webapp.
sql.Open();
}
catch (Exception ex)
{
result = $"Error : {ex.Message}";
}
finally
{
if ( sql != null && sql.State == System.Data.ConnectionState.Open )
{
sql.Close();
}
}
return Ok(result);
}
其他详细信息:
更新1:
This发表关于connectionString
类的AzureServiceTokenProvider
参数的讨论。我尝试为RunAs=Developer; DeveloperTool=VisualStudio
提供connectionString
的值,但仍然面临相同的问题。
答案 0 :(得分:0)
在Microsoft forum上获得以下答案
Hello Hemant
从屏幕快照中可以看到,您使用实时ID登录到Visual Studio。
数据库是在与工作帐户关联的租户中创建的吗?
在Azure SQL Server上将哪个用户设置为AAD管理员?
用于登录VS的用户帐户应作为用户添加到数据库中,以使身份验证起作用。
或者,在您引用的同一篇文章中,有一节讨论创建AAD组和授予适当的权限。
您也可以将用户添加到AAD组中。
如果您还有其他问题,请告诉我们。
由Kalyan Chanumolu-MSFT建议作为答案微软员工,主持人2019年5月22日星期三3:55 Hemant标记为回答Shelar 2019年5月22日星期三4:22 AM 2019年5月22日,星期三,凌晨3:55
注意:我可以通过创建AAD组并授予适当的权限来完成此操作。
更新1:
我已按照以下步骤操作。让我知道是否还有其他可能的解决方案
'hemantdotnetcore1'
'hemantdotnetcore1'
添加为
活动目录管理员。现在,我可以使用下面的toke打开与SQL Server的连接。
sql.AccessToken =(new AzureServiceTokenProvider())。GetAccessTokenAsync(“ https://database.windows.net/”)。Result;