我创建了一个应用程序服务,该服务正在运行一个运行Identity Server的容器。该容器需要我从Key Vault加载的证书。要获取证书的内容,我要做的是:
我的第一次尝试是在应用程序设置中仅存储密钥的URI,然后尝试使用以下代码获取值:
from tkinter import *
top_level = Tk()
n = 5
label_list = []
for i in range(n):
label_list.append(Label(top_level, text = "Text"))
label_list[i].pack()
for i in range(n):
label_list[i].config(text="Text {}".format(i))
top_level.mainloop()
如果我将代码部署到VM中,这将起作用。但是,如果我将代码部署到运行容器的App Service中,则不会。因此,我决定尝试另一种选择,即使用Key Vault参考资料。因此,我创建了一个新的应用程序设置,如下所示:
var azureServiceTokenProvider = new AzureServiceTokenProvider();
var keyVaultClient = new KeyVaultClient(
new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
var cert = keyVaultClient
.GetSecretAsync(
Env.GetString("CERTIFICATE_KEY_VAULT_KEY"))
.ConfigureAwait(false).GetAwaiter().GetResult();
identityServerBuilder.AddSigningCredential(new X509Certificate2(Convert.FromBase64String(cert.Value)));
然后在我的代码中使用此值:
CERTIFICATE_CONTENT = @Microsoft.KeyVault(SecretUri=https://mykeyvault.vault.azure.net/secrets/IdentityCert/5221036c6b734d5fa69cba29976a8592)
但这也不起作用。
我已在App Service中启用了托管身份,并将其添加到密钥保管箱中的访问策略中。
如何从Key Vault获得价值?有什么我想念的吗?
答案 0 :(得分:0)
所以,错误是我添加新访问策略的方式。我正在选择主体ID 和授权的应用程序。事实证明,我只需要选择主体,将“授权”应用程序保留为“未选择”。