我有一个从
${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 CLI 将 ADAL 令牌和服务主体条目保存到 ~/.azure/accessToken.json
后来当 Azure CLI 使用 MSAL 时,它不再生成 accessTokens.json 文件。
任何依赖于 accessTokens.json 的现有工作流程都不再有效
因此,您可以使用 AzureCliCredential 类来代替 DefaultAzureCredentials 类
AzureCliCredential类使用子进程调用az account get-access-token来获取当前登录帐户的访问令牌
目前,您可以在主机系统和容器内使用 2.30 之前的 az-cli 版本。此处提供了安装特定版本的说明:https://learn.microsoft.com/en-us/cli/azure/install-azure-cli