有没有办法在不使用AD身份验证的情况下访问azure密钥库?
答
您将需要serviceprincipal名称来解密密钥。因此,答案不幸的是没有。
答
我们可以在C#代码中使用Azure PowerShell脚本来实现。为此,我们只需要keyvault的名称,想要访问它的用户的秘密名称和Azure凭证。
static void Main(string[] args)
{
Program program = new Program();
string scriptText = "Login-AzureRmAccount";
string result = program.RunScript(scriptText);
Console.WriteLine(result);
Console.ReadLine();
}
private string RunScript(string scriptText)
{
Runspace runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
Pipeline pipeline = runspace.CreatePipeline();
pipeline.Commands.AddScript(scriptText);
pipeline.Commands.AddScript("$secret = Get-AzureKeyVaultSecret -VaultName '[Name_of_keyVault]' -Name '[Name_of_secret]'");
pipeline.Commands.AddScript("Write $secret.SecretValueText");
Collection<PSObject> results = pipeline.Invoke();
runspace.Close();
StringBuilder stringBuilder = new StringBuilder();
foreach (PSObject obj in results)
{
stringBuilder.AppendLine(obj.ToString());
}
return stringBuilder.ToString();
}
其实,我想访问没有AD应用程序认证的密钥库。这是我能想到的唯一方法。
为什么从C#中调用PS时,有包直接执行此操作?不需要从C#调用PS。还不是你只是登录到AAD吗?这个问题说他不想这样做。 – nashwan