Azure Keyvault 本地问题

Azure Keyvault Local Issues

我通过托管身份使用 Keyvault 已有一段时间了。但是对于这个项目,我在本地开发时得到了奇怪的结果。

出于某种原因,如果我没有 ExcludeManagedIdentityCredential = true,在我的本地机器上开发时,它会抛出一个错误并且不会得到秘密。如果我添加该标志,它会像预期的那样使用我的 visual studio 凭据。

很困惑为什么我必须添加那个标志,这是我以前从未有过的。

    using AzureEventSourceListener listener = AzureEventSourceListener.CreateConsoleLogger();

    DefaultAzureCredentialOptions options = new DefaultAzureCredentialOptions()
    {
        Diagnostics =
            {
                LoggedHeaderNames = { "x-ms-request-id" },
                LoggedQueryParameters = { "api-version" },
                IsLoggingContentEnabled = true,
                IsAccountIdentifierLoggingEnabled = true,

            },
            ExcludeManagedIdentityCredential = true
    };
    var client = new SecretClient(new Uri(xxx), new DefaultAzureCredential(options));

错误:

不确定为什么它甚至在本地尝试托管身份,以及为什么它不会失败并继续使用 visual studio 身份。

总结:在云中运行良好,在添加 ExcludeManagedidentityCredential = true 时在本地运行良好。不知道为什么我在本地需要那个标志。

您必须为登录 Visual Studio 的用户分配 Key Vault 访问策略。请参阅:Assign a Key Vault access policy,但在步骤中使用“Select principal*”select 用户而不是应用管理身份

你总是将它设置为 true 吗?

IsAccountIdentifierLoggingEnabled = true

将以上设置为 false 并查看它是否在本地工作而不需要将 ExcludeManagedIdentityCredential 设置为 true。

我认为这是你的问题:https://github.com/Azure/azure-sdk-for-net/issues/28218

尝试将 Azure.Identity 降级到 1.4(如果可能)以查看问题是否继续重现。