从本地 Web 应用程序使用 Azure Vault Secret

Use Azure Vault Secret from onpremise Web Application

我想使用来自本地 Web 应用程序的 Azure Key Vault 机密。

我创建了一个带有秘密的 Key Vault,但在访问策略中我应该指定一个授权应用程序并且在示例中使用了 Azure WebApp。

我想改用本地 MVC 网络应用程序中的秘密:我应该什么都不指定并且它有效吗?我自己指定了 Azure Vault 和 Principal,但我不确定这是否正确。

好吧,有些东西需要进行身份验证才能访问秘密。 当前用户,或者您可以使用服务主体。

由于我们讨论的是 MVC 应用程序,因此服务主体可能更简单。 您需要通过 Azure 门户在 Azure Active Directory 中注册一个新应用。 找到 Azure AD,通过 App registrations 注册一个新的应用程序。

名称和 URL 并不重要,但它必须是 Web app/API 类型。 例如,登录 URL 可以是 https://localhost。 然后在 Keys 边栏中添加一个 key 到应用程序(创建应用程序后单击设置,然后单击密钥)。 将客户端 ID(应用程序 ID)和密钥复制到某处。

现在您可以转到您的 Key Vault,创建一个新的访问策略,然后选择您创建的应用程序作为主体。 给它你想要的权利,比如 Secrets -> Get。 然后就可以保存策略了。

在您的应用中,您可以像这样使用 Key Vault library + ADAL

var kvClient = new KeyVaultClient(async (authority, resource, scope) =>
{
    var context = new AuthenticationContext(authority);
    var credential = new ClientCredential("client-id-here", "key-here");
    AuthenticationResult result = await context.AcquireTokenAsync(resource, credential);
    return result.AccessToken;
});

SecretBundle secret = await kvClient.GetSecretAsync("https://yourvault.vault.azure.net/", "secret-name");
string secretValue = secret.Value;