从 azure blob 存储(静态网站)访问 azure key vault

Access azure key vault from azure blob storage (static website)

我有一个 blob 存储,用作网站。 此 blob 具有系统分配的托管标识。

此身份已作为访问策略添加到密钥保管库。 所以实际上它应该能够访问这些秘密。

但是当我按照 microsoft documented 的方式尝试时,我得到了一个错误。

const getSecret = async () => {
        var credential = new DefaultAzureCredential({
            ManagedIdentityClientId: "<blob-id>",
        } as DefaultAzureCredentialOptions)
        const keyVaultName = "<key-vault-name>"
        const url = "https://" + keyVaultName + ".vault.azure.net"
        const client = new SecretClient(url, credential)
        const secret = await client.getSecret("function-key")
}

我收到错误消息

Error: DefaultAzureCredential is not supported in the browser. Use InteractiveBrowserCredential instead.
    at Module.60308 (defaultAzureCredential.browser.js:5:34) 

这可能吗?

谢谢!

  • 请检查这个 azure-sdk-for-js issue 根据哪个, 交互式凭据是 recommended 而不是默认的 credentials.And 对于在浏览器中 运行 的客户端应用程序, InteractiveBrowserCredential 是唯一的凭证类型 supported.Please 检查这个 github reference
  • 因此对于 Node.js 的交互式凭据,如果 clientId 是 前提是,需要将 Azure AD 应用配置为具有 "Mobile and desktop applications" 作为 redirect 端点而不是 web。看 set up redirect uri

DefaultAzureCredential and examples

同样根据DefaultAzureCredential Class | Microsoft Docs 如果启用,将按顺序尝试以下凭据类型:

EnvironmentCredential >ManagedIdentityCredential > SharedTokenCacheCredential > VisualStudioCredential > VisualStudioCodeCredential > AzureCliCredential> AzurePowerShellCredential >InteractiveBrowserCredential: uses browser to auth users - not enabled by default. Pass true to the DefaultAzureCredential to enable it.