使用需要多重身份验证 (MFA) 的帐户登录 Visual Studio

在本文中,了解如何将 Visual Studio 与需要多重身份验证 (MFA) 的帐户一起使用。

为什么要启用 MFA 策略?

在与外部来宾用户协作时,最好使用条件访问 (CA) 策略(例如多重身份验证 (MFA))来保护应用和数据。

启用后,来宾用户不仅需要用户名和密码来访问你的资源,而且还必须满足其他安全要求。 可在租户、应用或个人来宾用户级别上强制实施 MFA 策略,操作方式与为你自己的组织成员启用这些策略的方式相同。

MFA 策略会对 Visual Studio 体验带来什么影响?

与启用了 CA 策略(例如 MFA)并与两个或多个租户相关联的帐户一起使用时,Visual Studio 16.6 之前的版本可能会降低身份验证体验。

这些问题可能会导致你的 Visual Studio 实例每天多次提示重新验证。 你可能必须重新输入之前已经过身份验证的租户的凭据,即使在同一个 Visual Studio 会话过程中也是如此。

搭配使用 Visual Studio 与 MFA 策略

你还可以在 Visual Studio 中访问通过 CA 策略(如 MFA)保护的资源。 要使用此增强工作流,需要选择使用系统的默认 Web 浏览器作为添加并重新验证 Visual Studio 帐户的机制。

你还可以在 Visual Studio 中访问通过 CA 策略(如 MFA)保护的资源。 若要使用此增强的工作流,需要选择使用系统的默认 Web 浏览器或 Windows 身份验证代理(Visual Studio 版本 17.5中提供,但我们建议使用 Visual Studio 版本 17.7 以获得最佳体验),作为添加和重新身份验证 Visual Studio 帐户的机制。

警告

如果未使用此工作流,则在添加或重新验证 Visual Studio 帐户时,可能会触发降级的体验,导致多次额外的身份验证提示。

启用 Windows 身份验证代理

注意

Web 帐户管理器 (WAM) 仅适用于 Windows 10 及更高版本以及 Windows Server 2019 及更高版本。

要启用此工作流,请转到 Visual Studio 的“选项”对话框(“工具”>“选项…”),选择“帐户”选项卡,然后从“使用以下方式添加和重新验证帐户:”下拉列表中选择“Windows 身份验证代理”。

从下拉列表中选择 Web 身份验证中转站。

Windows 身份验证中转站使用 Web 帐户管理器 (WAM),并提供许多好处,例如安全性、改进的 MFA 支持以及添加到操作和 Visual Studio 的帐户之间的无缝集成。

启用系统 Web 浏览器

备注

为了获得最佳体验,建议在继续此工作流之前清除系统的默认 Web 浏览器数据。 此外,如果 Windows 10 设置中的“访问工作或学校”下有工作或学校帐户,请验证它们是否已正确通过身份验证。

要启用此工作流,请转到 Visual Studio 的“选项”对话框(“工具”>“选项…”),选择“帐户”选项卡,然后在“使用以下方式添加并重新验证帐户:”下拉列表中选取“系统 Web 浏览器”。

从菜单中选择系统 Web 浏览器。

使用 MFA 策略登录其他帐户

Windows 身份验证代理

启用 Windows 身份验证代理工作流后,可以通过“帐户设置”对话框(“文件”>“帐户设置…”)按常规方式登录或向 Visual Studio 添加帐户。 Web 帐户管理器 (WAM) 允许用户使用 Windows 已知的帐户(例如,登录到 Windows 会话的帐户),从而简化登录体验。

使用 Windows 身份验证中转站工作流将其他帐户添加到 Visual Studio。

系统 Web 浏览器

启用系统 Web 浏览器工作流后,可以通过“帐户设置”对话框(“文件”>“帐户设置…”)按常规方式登录或向 Visual Studio 添加帐户。

向 Visual Studio 添加新的个性化帐户。

此操作将打开系统的默认 Web 浏览器,要求你登录帐户,并验证任何所需的 MFA 策略。

在登录过程中,你可能会收到询问你是否保持登录状态的其他提示。 在第二次使用帐户登录时,可能会显示此提示。 为了最大限度地减少重新输入凭据的需要,建议选择“是”,因为这可确保在浏览器会话中保留凭据。

保持登录状态?

根据你的开发活动和资源配置,系统可能仍会提示你在会话期间重新输入凭据。 当你添加新资源或尝试访问资源时,如果之前未满足其 CA/MFA 授权要求,可能会发生这种情况。

重新验证帐户

如果你的帐户有问题,Visual Studio 可能会要求你重新输入帐户凭据。

显示需要重新进行身份验证的帐户的屏幕截图。

单击“重新输入凭据”会打开系统的默认 Web 浏览器,并尝试自动刷新你的凭据。 如果失败,系统将要求登录你的帐户并验证任何所需的 CA/MFA 策略。

如果你的帐户与多个 Azure Active Directory 相关联,并且其中一个或多个目录遇到访问问题,则“重新输入凭据”对话框将显示受影响的目录和关联的 AADSTS 错误代码

你将能够取消选择不想重新进行身份验证的任何目录,并继续使用主目录进行常规登录操作,以及保持选中状态的任何来宾租户。 在删除帐户筛选器之前,将无法访问取消选择的目录供将来使用。

重新验证 Visual Studio 帐户。

备注

为了获得最佳体验,请保持浏览器打开,直到为资源验证了所有 CA/MFA 策略。 关闭浏览器可能会导致以前生成的 MFA 状态丢失,并且可能会提示其他授权提示。

排查登录问题

CA/MFA 问题

如果遇到 CA/MFA 问题,并且/或即使在使用系统 Web 浏览器时也无法登录,请尝试以下步骤来解决此问题:

  1. 在 Visual Studio 中退出登录帐户。
  2. 选择“工具”>“选项”>“帐户”> 取消选中“跨所有 Azure Active Directory 进行身份验证”。
  3. 重新登录。

备注

完成这些步骤后,你或许能够登录,但你的帐户将处于筛选状态。 处于筛选状态时,只有帐户的默认租户和资源可用。 所有其他 Microsoft Entra 租户和资源将不可访问,但你可以手动重新添加它们

预授权问题

预授权错误对话框的屏幕截图。

从 Visual Studio 2022 版本 17.5 开始,如果看到前面的错误对话框,请尝试以下步骤来解决问题:

  1. 在 Visual Studio 中退出登录帐户。
  2. 重新登录。
  3. 创建新的“报告问题”票证,说明在遇到问题之前正在执行的活动和/或尝试访问的资源。

备注

创建票证将帮助我们识别有问题的区域,并提供调查和解决问题所需的日志。

政府云登录问题

尝试访问政府云时出现登录错误的屏幕截图。

从 Visual Studio 2022 版本 17.5 开始,如果在登录操作期间看到以前的错误对话框或遇到问题,请尝试以下步骤来解决问题:

  1. 关闭 Visual Studio。
  2. 打开特定 Visual Studio 安装的“开发人员命令提示”。
  3. 输入 Set DisableWAMClientIdForVS=true。 或者,可以使用 Setx DisableWAMClientIdForVS true 在系统上设置用户变量。 设置用户变量后,无需再次执行此操作。
  4. 设置用户变量后,从开发人员命令提示打开 Visual Studio:devenv
  5. 重新登录。

Web 帐户管理器 (WAM) 错误

如果使用 Windows 身份验证中转站工作流登录到 Visual Studio 时遇到错误,请按照错误对话框中列出的操作来解决或报告问题。 使用对话框上的链接了解有关错误的更多信息或者查看错误日志。

例如,如果看到以下错误对话框,则可以通过选择“更改身份验证机制”打开“登录选项”并切换到系统 Web 浏览器来解决该问题。

WAM 错误对话框的屏幕截图,其中包含用于解决错误的“更改身份验证机制”选项。

如何在 Visual Studio 中选择退出使用特定 Microsoft Entra 租户

Visual Studio 2019 版本 16.6 及更高版本能够灵活地筛选掉租户(单独或全局),从而有效地对 Visual Studio 隐藏它们。 筛选出特定租户后,无需再向该租户进行身份验证,但这也意味着你将无法访问任何关联资源。

当你有多个租户并且想要通过面向特定的子集来优化开发环境时,此功能很有用。 在无法验证特定 CA/MFA 策略的情况下,此功能也很有用,因为你可以筛选出违规的租户。

如何筛选掉所有租户

若要全局筛选掉所有租户,请打开“帐户设置”对话框(“文件”>“帐户设置...”>“帐户选项”),然后取消选中“在所有 Azure Active Directory 中进行身份验证”复选框。

取消选中该选项可以确保只对帐户的默认租户进行身份验证。 这也意味着你无法访问任何与你的帐户在其中充当来宾的其他租户关联的任何资源。

如何筛选掉单个租户

要筛选与你的 Visual Studio 帐户关联的租户,请打开“帐户设置”对话框(“文件”>“帐户设置…”)并单击“应用筛选器”。

应用筛选器。

此时将显示“筛选帐户”对话框,让你选择要与帐户一起使用的租户。

选择要筛选的帐户。

取消选择要筛选的租户后,“帐户设置”和“筛选帐户”对话框将显示筛选状态。

显示“帐户设置”和“筛选帐户”对话框中筛选的租户状态的屏幕截图