如何使用 REST API 将 .Net 4.5 应用程序与 Key Vault 集成

问题描述 投票:0回答:1

我有一些使用 .net Framework 4.5 开发的应用程序,这些应用程序需要从 Azure Key Vault 获取密钥和机密。我计划使用 REST API,因为 .Net Framework 4.5 不支持开箱即用的 Azure Key Vault。由于应用程序部署在 Azure VM 中,并且有些可能是 onPrem VM,因此从 VM 中托管的应用程序使用 REST API 存在挑战。

我遇到了 this MSFT 文档,其中显示了使用 CURL 获取令牌以及一些 .Net 示例代码。其中有一个静态IP地址(169.254.169.254)。这个IP地址代表什么意思?这个特定的IP地址可以在源代码中使用吗?

我试图找到演示如何使用 REST API 将 .Net 4.5 应用程序与 Key Vault 集成的教程,但找不到任何内容。

由于各种其他复杂性,升级到更高版本的 .Net Framework 或 .Net Core 不是一个选择。

请任何人帮忙。预先感谢。

azure .net-4.5 azure-keyvault asp.net-4.5
1个回答
0
投票

IP 地址 169.254.169.254 是 Azure 实例元数据服务 (IMDS) 的特殊地址。它用于检索有关 Azure VM 实例的信息,例如访问令牌,该令牌可用于对 Azure Key Vault 等服务的请求进行身份验证。此 IP 地址仅在 Azure VM 内可用。

由于您的应用程序同时部署在 Azure VM 和本地 VM 上,因此这可能是一个挑战,因为 169.254.169.254 只能从 Azure VM 访问,而不能从外部计算机访问。对于本地 VM,您应该考虑使用其他身份验证方法,例如客户端密钥或证书,这些方法可以通过 Azure AD 配置。

以下是使用 REST API 从 Azure Key Vault 检索机密的基本步骤:

身份验证:如果应用程序在 Azure VM 上运行,您可以使用 IMDS 从 Azure AD 获取 OAuth 2.0 令牌。否则,对于本地 VM,您可以使用客户端 ID 和客户端密钥或证书。

使用curl检索令牌的示例:

curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://vault.azure.net' -H Metadata:true

请求机密:获得令牌后,您可以发出 REST 请求以访问 Azure Key Vault 中的机密。

使用令牌的请求示例:

curl -H "Authorization: Bearer <token>" https://<your-vault-name>.vault.azure.net/secrets/<secret-name>?api-version=7.0

如果您正在寻找将 Azure Key Vault 与 .NET 4.5 应用程序集成的示例,遗憾的是,.NET Framework 4.5 没有对 Azure Key Vault 的内置支持。但是,您可以使用 .NET 中的 HttpClient 等类手动向 Azure Key Vault 的 REST API 发出 HTTP 请求。

© www.soinside.com 2019 - 2024. All rights reserved.