你当前正在访问 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
,以获取当前登录的帐户的访问令牌。
另请参阅
- MSAL
- Python
- Python 中的 AzureCliCredential 类
- .NET
- .NET 中的 AzureCliCredential 类
- Java
- Java 中的 AzureCliCredential 类