可以在本地为 SQL 服务器连接模拟用户分配的托管标识

Possible to impersonate user-assigned managed identity locally for SQL Server connection

我正在研究使用 Azure 用户分配的托管身份从我们使用 EntityFramework 的应用程序访问 SQL 服务器 6. 我已经使用这个包让它工作:https://www.nuget.org/packages/ErikEJ.EntityFramework.SqlServer 和具有以下属性的连接字符串:

Authentication=Active Directory Managed Identity;User Id=<clientId of managed identity>;

但是,当 运行 在本地我必须使用

Authentication=Active Directory Interactive;

如果有一种方法可以在本地以某种方式模拟托管标识,以便可以在本地调试任何架构访问问题,那就更好了。 (我们有多种不同身份可以使用的不同模式)。有什么办法吗?此时此刻,我迷失在文档和教程中。任何解决方案都必须在 .NET Core 3.1 和 .NET Framework 4.7.2 中工作。

本地环境 ManagedIdentityCredential 不支持用户管理身份。

您应该使用 DefaultAzureCredential 代码才能在本地环境中工作。

查看注意提示here

ManagedIdentityCredential 仅适用于支持托管身份验证的 Azure 服务环境。 它在本地环境中不起作用。

使用 DefaultAzureCredential 让代码在本地和 Azure 环境中工作,因为它将回退到一些身份验证选项,包括托管身份。

如果您想在部署到 Azure 时使用 用户分配的托管身份DefaultAzureCredential指定 clientId.