是否为 Windows 桌面应用程序启用了 Azure 托管标识?

Is Azure Managed Identity enabled for Windows desktop app?

我按照本教程中的说明进行操作(选项 #1 自动配置):https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-v2-windows-desktop

生成的 WPF 桌面应用程序运行良好,我能够让它对我的 Azure AD 帐户进行身份验证。

这是否意味着桌面应用程序正在使用 Azure Managed Identity?

如果没有,我还需要做什么才能完成此操作?

我的最终目标是能够修改桌面应用程序并访问 Azure Key Vault 中的机密,而无需硬编码凭据或使用环境变量。

Does this mean that the desktop app is using Azure Managed Identity?

不,这并不意味着,来自此 doc 的桌面应用程序只是使用 AAD 应用程序供您登录,与托管身份 (MSI) 无关。

If not, what else do I have to do to accomplish this?

如果您想使用 MSI 访问 azure keyvault 中的机密,您需要 运行 您的代码 azure services that supported MSI 例如azure 应用程序服务、azure VM 等,MSI 在其他任何地方都不可用。

对于代码,只使用Azure Key Vault secret client library for .NET,它使用DefaultAzureCredential进行验证,它会自动尝试多种验证方式,其中一种是ManagedIdentityCredential即MSI。

var client = new SecretClient(vaultUri: new Uri(keyVaultUrl), credential: new DefaultAzureCredential());

另外你应该注意,当你使用 MSI 访问 azure keyvault secret 时,它是一种非交互方式,不会要求用户登录(即没有用户参与),因为 MSI 本质上是一个服务主体AAD,当使用它进行身份验证时,它只是对 azure 实例元数据端点进行 API 调用以获取令牌,然后使用令牌进行身份验证。