azure - 用户“NT AUTHORITY\ANONYMOUS LOGON”登录失败。- MSI(托管身份)
问题描述
我已按照本教程使用托管标识保护来自应用服务的 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);
}
其他详情:
- Visual Studio 2019 社区 - 版本 16.1.0 预览版 3.0
- .NET 核心 2.2
更新 1:
这篇文章讨论connectionString
了类的参数AzureServiceTokenProvider
。我尝试提供RunAs=Developer; DeveloperTool=VisualStudio
价值,connectionString
但仍然面临同样的问题。
解决方案
在微软论坛上得到以下答案
你好赫曼特
我可以从屏幕截图中看到您使用 Live ID 登录到 Visual Studio。
租户中创建的数据库是否与工作帐户相关联?
哪个用户在 Azure SQL Server 上设置为 AAD 管理员?
您用于登录 VS 的用户帐户应添加为数据库中的用户,以便身份验证工作。
或者,在您引用的同一篇文章中,有一节讨论了创建 AAD 组并授予适当的权限。
您也可以将您的用户添加到 AAD 组。
如果您还有其他问题,请告诉我们。
由 Kalyan Chanumolu-MSFTMicrosoft 员工、版主提议为回答 2019 年 5 月 22 日星期三凌晨 3:55 Hemant.Shelar 标记为回答 2019 年 5 月 22 日星期三凌晨 4:22 2019 年 5 月 22 日星期三凌晨 3:55
注意:我能够通过创建 AAD 组并授予适当的权限来完成它。
更新 1:
我已按照以下步骤使其工作。让我知道是否存在任何其他可能的解决方案
- 创建了一个 AAD 组,例如
'hemantdotnetcore1'
- 将用户添加到该组(一般这些用户是开发环境中想要在开发过程中访问数据库的开发人员)
- 导航到 SQL 服务器实例并设置“Active Directory 管理员”。在此示例中,我已添加
'hemantdotnetcore1'
为活动目录管理员。
- 在 Visual Studio 中导航到“Azure 服务身份验证”并使用属于“hemantdotnetcore1”组的任何用户登录,该组是我的 Azure Active Directory 管理员
现在我可以使用下面的 toke 打开与 SQL Server 的连接。
sql.AccessToken = (new AzureServiceTokenProvider()).GetAccessTokenAsync(" https://database.windows.net/ ").Result;
推荐阅读
- qt - qml对话框删除确定按钮
- python - PyPDF2 忽略内容,仅获取水印
- ios - OCMock 返回未调用的方法,但我确信它是
- mysql - MySQL - 选择日期时间列前 1 小时的行
- c# - .Net 引用不同版本库的麻烦
- amazon-web-services - 适用于 RDS 的 AWS cloudwatch 警报
- linker - 我如何知道 ld 使用的库的路径?
- node.js - 为什么npm单独安装时会安装相同依赖的两个不同版本
- r - Mystery Matrix Subset
- kotlin - How to hash data class with array property