将 Azure 凭据移动到 Docker

问题描述 投票:0回答:2

我有一个从

${USERPROFILE}/.azure
/root/.azure:rw
的 Docker 卷。在我的
Dockerfile
中,我正在安装
az-cli
,然后在 .NET 中使用
DefaultAzureCredentials
类(https://learn.microsoft.com/en-us/dotnet/api/azure.identity.defaultazurecredential?view =azure-dotnet)加载凭据。

它工作得很好,直到一个月前,我不得不在我的机器上

az login
,然后它在 Docker 中工作得很好。但是,大约一个月前,当
az-cli
从 ADAL 切换到 MSAL 时,它抛出异常,提示我未登录。

我的猜测是,

az-cli
现在将令牌存储在其他地方,除了
.azure
目录或其他地方,我不确定。有人有什么想法吗?

azure docker azure-ad-msal adal
2个回答
1
投票

之前,Azure CLI 将 ADAL 令牌和服务主体条目保存到 ~/.azure/accessToken.json

后来当 Azure CLI 使用 MSAL 时,它不再生成 accessTokens.json 文件。

任何依赖于 accessTokens.json 的现有工作流程都不再有效

因此,您可以使用 AzureCliCredential 类来代替 DefaultAzureCredentials

AzureCliCredential类使用子进程调用az account get-access-token来获取当前登录帐户的访问令牌

参考基于 MSAL 的 Azure CLI |微软文档


0
投票

目前,您可以在主机系统和容器内使用 2.30 之前的 az-cli 版本。此处提供了安装特定版本的说明:https://learn.microsoft.com/en-us/cli/azure/install-azure-cli

© www.soinside.com 2019 - 2024. All rights reserved.