我的理解是,为了在 Azure 中实现对 SQL 数据库的 Azure AD 托管服务标识访问,我需要SqlConnection
使用检索到的令牌创建一个。
要将该令牌添加到SqlConnection
.NET 4.6+ 中有一个AccessToken
属性来执行此操作。.NET Core 2.0 没有。
有没有办法解决?
在这一点上,在核心应用程序中实现 Azure AD 托管服务标识似乎是不可能的,除非我有误解。
我的理解是,为了在 Azure 中实现对 SQL 数据库的 Azure AD 托管服务标识访问,我需要SqlConnection
使用检索到的令牌创建一个。
要将该令牌添加到SqlConnection
.NET 4.6+ 中有一个AccessToken
属性来执行此操作。.NET Core 2.0 没有。
有没有办法解决?
在这一点上,在核心应用程序中实现 Azure AD 托管服务标识似乎是不可能的,除非我有误解。
从 SqlClient 包 4.6.0 开始,SqlConnection
现在支持AccessToken
.NET SqlClient
Core 2.2。
一种解决方法是将连接字符串存储在 Azure Key Vault 中,然后实施 MSI 以从 Key Vault 中检索它。
它现在是 2020 年 6 月,并且正在使用 .NET 5.0 preview 4。但仍然不支持在 Blazor Asp.NET Core 中基于 AccessToken 连接到 SqlConnection。
Azure SQL 数据库中的连接字符串部分说要在连接字符串中使用“用户 ID”,身份验证 =“Active Directory Interactive”,但在 .NET EF Core 中,我们收到错误,即无法使用 AD Integrated 或 AD Interactive 设置用户 ID。另一种方法是使用 Azure Vault。
我们更喜欢在连接字符串和 AccessToken 中使用动态用户 ID(来自 AAD 可显示 ID)。这会在 .NET 5 最终版本之前得到支持吗?
要使用托管标识访问 Sql,您需要使用.NET Framework 4.6或更高版本或.NET Core 2.2或更高版本。
你可以在这里找到完整的教程: