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

使用 Azure CLI 以交互方式登录

Azure 的交互式登录提供更直观、更灵活的用户体验。 使用 Azure CLI 进行交互式登录可让用户直接通过 az login 命令向 Azure 进行身份验证,这对于临时管理任务和需要手动登录的环境(例如具有多重身份验证(MFA)的环境非常有用。 此方法简化了用于脚本测试、学习和动态管理的访问,无需预先配置服务主体或其他非交互身份验证方法。

先决条件

交互式登录

若要以交互方式登录,请使用 az login 命令。 从 Azure CLI 版本 2.61.0 开始,Azure CLI 在 Windows 上使用 Web 帐户管理器(WAM),默认情况下在 Linux 和 macOS 上使用基于浏览器的登录名。

az login

订阅选择器

从 Azure CLI 版本 2.61.0 开始,如果有权访问多个订阅,系统会提示你在登录时选择 Azure 订阅,如以下示例所示。

Retrieving subscriptions for the selection...

[Tenant and subscription selection]

No    Subscription name                     Subscription ID                           Tenant name
----  ------------------------------------  ----------------------------------------  --------------
[1]   Facility Services Subscription        00000000-0000-0000-0000-000000000000      Contoso
[2]   Finance Department Subscription       00000000-0000-0000-0000-000000000000      Contoso
[3]   Human Resources Subscription          00000000-0000-0000-0000-000000000000      Contoso
[4] * Information Technology Subscription   00000000-0000-0000-0000-000000000000      Contoso

The default is marked with an *; the default tenant is 'Contoso' and subscription is
'Information Technology Subscription' (00000000-0000-0000-0000-000000000000).

Select a subscription and tenant (Type a number or Enter for no changes): 2

Tenant: Contoso
Subscription: Finance Department Subscription (00000000-0000-0000-0000-000000000000)

[Announcements]
With the new Azure CLI login experience, you can select the subscription you want to use more easily.
Learn more about it and its configuration at https://go.microsoft.com/fwlink/?linkid=2271236

If you encounter any problem, please open an issue at https://aka.ms/azclibug

下次登录时,之前选择的租户和订阅将标记为默认租户,其编号旁边带有星号(*)。 这样,可以按 Enter 选择默认订阅。

默认情况下,命令针对所选订阅运行。 你仍可用于 az account set 随时从命令行更改订阅。 有关详细信息,请参阅 如何使用 Azure CLI 管理 Azure 订阅。

下面是有关订阅选择器要记住的一些准则:

  • 订阅选择器仅在 64 位 Windows、Linux 或 macOS 中可用。
  • 仅当使用 az login 命令时,订阅选择器才可用。
  • 使用服务主体或托管标识登录时,系统不会提示你选择订阅。

如果要禁用订阅选择器功能,请将 core.login_experience_v2 配置属性设置为 off

az config set core.login_experience_v2=off
az login

在 Windows 上使用 Web 帐户管理器(WAM)登录

从 Azure CLI 版本 2.61.0 开始,Web 帐户管理器(WAM)现在是 Windows 上的默认身份验证方法。 WAM 是充当身份验证代理的 Windows 10+ 组件。 (身份验证代理是在用户计算机上运行的应用程序,用于管理已连接帐户的身份验证握手和令牌维护。)

使用 WAM 具有以下几个好处:

如果遇到问题并且想要还原到以前的基于浏览器的身份验证方法,请将 core.enable_broker_on_windows 配置属性设置为 false

az account clear
az config set core.enable_broker_on_windows=false
az login

WAM 适用于 Windows 10 及更高版本,以及 Windows Server 2019 及更高版本。

使用浏览器登录

如果出现以下情况之一,Azure CLI 默认为基于浏览器的身份验证方法:

  • 操作系统(OS)是 Mac 或 Linux,或者 Windows OS 早于 Windows 10 或 Windows Server 2019。
  • 配置 core.enable_broker_on_windows 属性设置为 false.

按照以下步骤使用浏览器登录:

  1. 运行 az login 命令。

    az login
    

    如果 Azure CLI 可以打开默认浏览器,则会启动授权代码流,并打开默认浏览器来加载 Azure 登录页面。

    否则,它会启动设备代码流,并指示打开浏览器页面,于 https://aka.ms/devicelogin。 然后,输入终端中显示的代码。

    如果没有可用的 Web 浏览器或 Web 浏览器无法打开,可通过 az login --use-device-code 强制使用设备代码流。

  2. 在浏览器中使用帐户凭据登录。

在命令行中使用凭据登录。

在命令行中提供 Azure 用户凭据。 仅将此身份验证方法用于学习 Azure CLI 命令。 生产级应用程序应使用服务主体或托管标识。

此方法不适用于 Microsoft 帐户或已启用双重身份验证的帐户。 收到 需要交互式身份验证 消息。

az login --user <username> --password <password>

重要

如果想要避免在控制台中显示自己的密码并以交互方式使用 az login,请在 bash 下面使用 read -s 命令。

read -sp "Azure password: " AZ_PASS && echo && az login -u <username> -p $AZ_PASS

在 PowerShell 下,请使用 Get-Credential cmdlet。

$AzCred = Get-Credential -UserName <username>
az login -u $AzCred.UserName -p $AzCred.GetNetworkCredential().Password

使用其他租户登录

可以使用 --tenant 参数选择用于登录的租户。 此参数的值可以是 .onmicrosoft.com 域或租户的 Azure 对象 ID。 交互式登录方法和命令行登录方法都可以配合 --tenant 来使用。

在选择环境中,从 Azure CLI 版本 2.61.0 开始,首先需要通过将配置属性设置为core.login_experience_v2off禁用订阅选择器。

# disable the subscription selector (v. 2.61.0 and up)
az config set core.login_experience_v2=off

# login with a tenant ID
az login --tenant 00000000-0000-0000-0000-000000000000

若要重新允许订阅选择器,请运行 az config set core.login_experience_v2=on。 有关订阅选择器的详细信息,请参阅 交互式登录

登录后,如果要更改活动租户,请参阅 如何更改活动租户

使用 --scope 登录

az login --scope https://management.core.windows.net//.default

Logout

若要删除对 Azure 的访问权限,请使用 az logout 命令。

az logout

清除订阅缓存

若要更新订阅列表,请使用 az account clear 命令。 需要再次登录才能看到更新的列表。

az account clear

az login

清除订阅缓存在技术上与注销 Azure 的过程不同。 但是,清除订阅缓存时,在再次登录之前,无法运行 Azure CLI 命令,包括 az account set

刷新令牌

使用用户帐户登录时,Azure CLI 会生成身份验证刷新令牌并将其存储下来。 由于访问令牌的有效期很短,因此在颁发访问令牌的同时也会颁发刷新令牌。 然后,客户端应用程序可以在需要时使用此刷新令牌交换新的访问令牌。 有关令牌生存期和过期时间的详细信息,请参阅在 Microsoft 标识平台中刷新令牌

使用 az account get-access-token 命令检索访问令牌:

# 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>"

下面是有关访问令牌过期日期的一些附加信息:

  • 过期日期以基于 MSAL 的 Azure CLI 支持的格式进行更新。
  • 从 Azure CLI 2.54.0 开始, az account get-access-token 返回 expires_on 令牌过期时间的属性与 expiresOn 属性。
  • expires_on 属性表示可移植操作系统接口 (POSIX) 时间戳,而 expiresOn 该属性表示本地日期时间。
  • 夏令时结束时,该 expiresOn 属性不表示“折叠”。 这可能会导致采用夏令时的国家/地区出现问题。 有关“折叠”的详细信息,请参阅 PEP 495 – 本地时间消除歧义。
  • 我们建议下游应用程序使用该 expires_on 属性,因为它使用世界时代码(UTC)。

示例输出:

{
  "accessToken": "...",
  "expiresOn": "2023-10-31 21:59:10.000000",
  "expires_on": 1698760750,
  "subscription": "...",
  "tenant": "...",
  "tokenType": "Bearer"
}

故障排除

当默认浏览器为 Microsoft Edge 时,尝试以交互方式az login登录到 Azure 时可能会遇到以下错误:“此站点的连接不安全。若要解决此问题,请访问 Microsoft 中的 edge://net-internals/#hsts

边缘。 在“ 删除域安全策略”下添加 localhost,然后选择“删除”。

另请参阅