代码之家  ›  专栏  ›  技术社区  ›  sampa

从azure blob存储访问azure密钥库(静态网站)

  •  0
  • sampa  · 技术社区  · 3 年前

    我有一个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) 
    

    这可能吗?

    谢谢

    0 回复  |  直到 3 年前
        1
  •  1
  •   kavyaS    3 年前
    • 请检查 azure-sdk-for-js issue 据此, 交互式凭据是 recommended 而不是默认 资格证书对于在浏览器中运行的客户端应用程序, 这个 InteractiveBrowserCredential 是唯一的凭据类型 支持。请检查 github reference
    • 因此,对于Node.js的交互式凭据,如果clientId为 提供,Azure AD应用程序需要配置为具有 "Mobile and desktop applications" redirect 端点而不是web。看见 set up redirect uri

    看见 DefaultAzureCredential and examples

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

    环境凭据>ManagedIdentity Credential> SharedTokenCacheCredential>VisualStudioCredential> VisualStudioCodeCredential>AzureCliCredential> AzurePowerShellCredential>交互式浏览器凭据: uses browser to auth users - not enabled by default. Pass true to the DefaultAzureCredential to enable it.