我正在尝试从我创建的Azure密钥保管库中获取机密(dbUser密码)。当我运行以下代码时,它将引发异常,无法获取有效令牌。
public static string GetDBConnectString(ILogger logger)
{
try
{
string dbusername = Environment.GetEnvironmentVariable("SqlDBusername"); // [dbusername]
logger.LogInformation($"Info: Creating DB Connection string as user {dbusername}.");
AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
KeyVaultClient keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
string vaultConnect = Environment.GetEnvironmentVariable("SqlDBKeyvault"); // ["https://keyvault.vault.azure.net/secrets/dbusername/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"]
// The below line fails
SecretBundle secret = keyVaultClient.GetSecretasync(vaultConnect).Getawaiter().GetResult();
string sqlConnection = string.Format(Environment.GetEnvironmentVariable("SqlDBConnectionString"),dbusername,secret.Value);
return sqlConnection;
}
catch (Exception ex)
{
logger.LogError(ex.Message,ex);
return string.Empty;
}
}
Exception.Message =“参数:连接字符串:[未指定连接字符串],资源:https://vault.azure.net,权限:https://login.windows.net/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx。异常消息:尝试了以下3种方法来获取访问令牌,但他们都不起作用。 参数:连接字符串:[未指定连接字符串],资源:https://vault.azure.net,权限:https://login.windows.net/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx。异常消息:尝试使用托管服务身份获取令牌。无法连接到托管服务标识(MSI)端点。请检查您是否正在运行具有MSI安装程序的Azure资源。 参数:连接字符串:[未指定连接字符串],资源:https://vault.azure.net,权限:https://login.windows.net/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx。异常消息:尝试使用Visual Studio获取令牌。无法获取访问令牌。 Visual Studio令牌提供程序microsoft.Asal.TokenService.exe的异常:TS003:错误,TS002:在租户“ xxxxxxxx-xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”中找不到帐户“ me@mycompany.com”。 “
我在这里看到了创建ClientId授权的各种解决方案,但是所有这些解决方案都需要创建用户名/密码,这违反了保险库的目的?
有人有不需要用户凭据打开保管库的解决方案吗?