我正在从 Azure VM 运行我的应用程序并尝试与 KeyVault 连接。但我遇到了异常
参数:连接字符串:[未指定连接字符串],资源:https://vault.azure.net ,权限:https://login.windows.net/1e465dc8-5f36-4ab9-9a49-57cbfdcfdf9a 。异常消息:尝试了以下3种方法来获取访问 token ,但都不起作用。
参数:连接字符串:[未指定连接字符串],资源:https://vault.azure.net ,权限:https://login.windows.net/1e465dc8-5f36-4ab9-9a49-57cbfdcfdf9a 。异常消息:尝试使用托管服务身份获取 token 。无法连接到托管服务身份 (MSI) 端点。请检查您是否在具有 MSI 设置的 Azure 资源上运行。
参数:连接字符串:[未指定连接字符串],资源:https://vault.azure.net ,权限:https://login.windows.net/1e465dc8-5f36-4ab9-9a49-57cbfdcfdf9a 。异常消息:尝试使用 Visual Studio 获取 token 。无法获取访问 token 。 Visual Studio token 提供程序 Microsoft.Asal.TokenService.exe 的异常:TS003:错误,TS001:此帐户“用户名”需要重新身份验证。请转到“工具”->“Azure 服务身份验证”,然后重新验证您要使用的帐户。
参数:连接字符串:[未指定连接字符串],资源:https://vault.azure.net ,权限:https://login.windows.net/1e465dc8-5f36-4ab9-9a49-57cbfdcfdf9a 。异常消息:尝试使用 Azure CLI 获取 token 。无法获取访问 token 。 “az”不被识别为内部或外部命令, 可运行的程序或批处理文件。
我已经检查了先决条件,例如 - 1.在VM的同一资源组中创建KeyVault并添加2个 secret 。 2. 检查虚拟机是否已在 Active Directory 中注册并且具有系统分配的标识。 3. 添加了允许读取和列出虚拟机 secret 的访问策略。
这是代码,我缺少什么
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
var azureServiceTokenProvider = new AzureServiceTokenProvider();
var keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
var secret = keyVaultClient.GetSecretAsync($"https://vaultname.vault.azure.net/Secrets/connString").Result.Value;
最佳答案
错误表明身份验证问题,因此需要按顺序验证两件事;
- 确认虚拟机可以查询 Azure 元数据服务
Invoke-RestMethod -Headers @{"Metadata"="true"} -URI "http://169.254.169.254/metadata/instance/compute/vmId?api-version=2017-08-01&format=text" -Method get`
如果上述查询成功,则检查元数据服务上的身份 API,但如果失败,则 VM 和 Azure 环境之间存在通信问题。
- 确认虚拟机可以查询 Azure 元数据服务的 Identity API
Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com%2F' -Headers @{Metadata="true"}
如果上述查询成功,则 MSI 没有任何问题。
关于azure - 从 Azure VM 连接到 KeyVault 时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57678993/