我正在运行一个由 asp.net core 2.2 api 组成的 docker 容器。此 api 需要访问 Azure 密钥保管库,并且我已使用在密钥保管库上具有正确访问策略的用户登录 Visual Studio 以检索机密。但是,当我使用 docker 的 Visual Studio 工具来调试容器时,这种特定的登录似乎不会在本地运行的容器内传播。但是当我在本地运行应用程序(不在 docker 容器中运行它)时,asp net core 配置提供程序似乎会获取我的 Visual Studio 登录信息。关于此的任何指示都会有帮助
我在 Mac 上使用 docker 和 MSI 时遇到了同样的问题。我最终做了以下解决方法:
首先从 CLI 获取访问令牌并将其设置为环境(并记住将其传递给 docker)
export ACCESS_TOKEN=$(az account get-access-token --resource=https://vault.azure.net | jq -r .accessToken)
在代码中,如果令牌在环境中则拾取它:
KeyVaultClient keyVaultClient;
var accessToken = Environment.GetEnvironmentVariable("ACCESS_TOKEN");
if (accessToken!=null)
{
keyVaultClient = new KeyVaultClient(
async (string a, string r, string s)=> accessToken);
}
else
{
var azureServiceTokenProvider = new AzureServiceTokenProvider();
keyVaultClient = new KeyVaultClient(
new KeyVaultClient.AuthenticationCallback(
azureServiceTokenProvider.KeyVaultTokenCallback));
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)