你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

基于 MSAL 的 Azure CLI

从版本 2.30.0 开始,Azure CLI 将 Microsoft 身份验证库 (MSAL) 用作基础身份验证库。 MSAL 使用 Azure Active Directory v2.0 身份验证流来提供更多功能,并提高令牌缓存的安全性。

警告

Azure CLI 2.30.0 中引入了重大更改。 安装之前,请仔细阅读文档。

accessTokens.json 弃用

以前版本的 Azure CLI 会将 Azure AD 身份验证库 (ADAL) 令牌和服务主体条目保存到 ~/.azure/accessToken.json。 最新版本的 Azure CLI 使用 MSAL,并且不再生成 accessTokens.json。 依赖于 accessTokens.json 的任何现有工作流都不再工作。

MSAL 令牌缓存和服务主体条目会在 Windows 中保存为加密文件,并在 Linux 和 MacOS 中保存为纯文本文件。

重要

在某个管道(如 Azure DevOps)中使用 Azure CLI 时,确保所有任务和阶段都针对基于 MSAL 的 Azure CLI 使用 v2.30.0 以上的 Azure CLI 版本。 Azure CLI 2.30.0 不能后向兼容以前的版本,并且在使用低于 2.30.0 的版本时会引发错误。

要考虑的替代方式

为了获得稳定性,可以考虑采用的替代方法:

调用 az account get-access-token

可以在终端中手动调用 az account get-access-token 或使用子进程从另一种编程语言调用它。 默认情况下,返回的访问令牌适用于 Azure 资源管理器 (ARM) 和 az account show 中显示的默认订阅/租户。

# get the active subscription
az account show --output table

# get access token for the active subscription
az account get-access-token

# get access token for a specific subscription
az account get-access-token --subscription "<subscription ID or name>"

若要详细了解访问令牌,请参阅 使用 Azure CLI 登录。

使用 AzureCliCredential

AzureCliCredential 是所有现有语言 SDK 中的凭据类型。 它使用子进程来调用 az account get-access-token,以获取当前登录的帐户的访问令牌。

另请参阅