Visual Studio与Azure AD:由于错误的租户而阻止的请求

2cmtqfgy  于 2023-04-22  发布在  其他
关注(0)|答案(1)|浏览(134)

我发布这个问题是出于教育的原因。我还没有在Stack Overflow中找到它。我会在之后立即发布答案。

场景:

1.您使用Visual Studio时,有多个帐户(在VS的“帐户设置”面板中):
1.拥有您的VS许可证但未绑定到身份验证系统的帐户(具体为:Azure AD),您的项目在运行时所依赖的。
1.没有您的VS许可证的帐户,但
以某种方式绑定到您的项目在运行时所依赖的Azure AD**。
1.(可能)提供其他服务的另一个帐户,例如您与github的连接。在企业环境中,该帐户可能与Azure AD帐户绑定。
1.您可以在Visual Studio中本地启动项目。
1.尽管在本地运行,但它是一个将通过使用正确的Azure AD身份验证连接到Azure中托管的一个或多个服务的项目。
1.您的项目似乎有正确的设置(连接字符串,secrets,tokens...)。身份验证应该有效!
1.但在服务示例化时(启动或查询调用等),一个或多个连接失败,并显示一条隐晦的错误消息:
未授权(401);(...)原因:(请求被Auth your-resource-in-azure阻止:提供的AAD令牌是由此数据库帐户不信任的颁发机构[aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee]颁发的。请确保令牌是由AAD租户[00000000-1111-2222-3333- 4444444444444]颁发的。

故障排除:

  • 您仔细检查身份验证设置是否正确,
  • 在Azure AD中(在Azure门户中),您可以检查用户是否属于正确的AD组,
  • 您检查了是否不需要为用户进行PIM(甚至可能是临时的)以进行连接,
  • 您仔细检查VS用于各种操作的浏览器是否存在相关问题。

(提醒:您可以在VS中配置至少3种不同的浏览器用途:

  1. IDE中使用的浏览器,用于在按住Ctrl键并单击超链接时打开超链接,
    1.启动Web项目的浏览器:单击下拉菜单“播放”按钮,你使用启动项目,并单击“浏览...”
    1.存储VS帐户身份验证的浏览器:工具--〉选项--〉环境--〉帐户--〉“嵌入式Web浏览器”与“系统Web浏览器”)
  • 以下是关于如何修复浏览器相关问题的详细说明:https://blog.jongallant.com/2021/08/visual-studio-re-enter-credentials/
  • 工具-〉选项-〉帐户
  • 在“添加并重新验证帐户使用:”下拉列表中,选择“系统Web浏览器”
  • 注销,然后重新登录。
  • 重新启动Visual Studio
  • 检查错误消息中的Guid后,您会注意到应作为正确权限的租户不是管理Azure AD的公司的租户;而是你另一个账户的租户只提供VS许可证。

如何查看租户指南:https://learn.microsoft.com/en-us/azure/active-directory/fundamentals/active-directory-how-to-find-tenant
根本问题很清楚:您不知道如何同时告诉VS使用许可证的正确帐户和包含Azure AD的租户的正确帐户。

oogrdqng

oogrdqng1#

您需要在“账户设置”面板中使用与租户绑定的账户作为“主”账户

提供license的账号是否为主账号无关紧要,可以是下面的副账号之一。
这种重新安排既不会阻止VS找到许可证,也不会阻止VS连接到其他辅助服务,如github(它可能提供您宝贵的github copilot许可证)。

分步:

  • 在VS窗口的右上角,打开“帐户设置...”
  • 在“主”帐户下(在面板的左上角),点击“注销”
  • 单击“登录”,这次以正确的Azure租户中的帐户(错误消息中预期的帐户)登录
  • (可选)登录后,单击“检查更新的许可证”。Visual Studio将找不到一个。
  • 仍然在“帐户设置”弹出窗口中,在“所有帐户”下,单击“添加”
  • 添加拥有您的许可证的帐户。
  • 点击“检查更新的许可证”。这次它找到了一个!
  • 如果需要,添加您可能需要的任何其他帐户,例如您公司提供的github帐户(在我的情况下,它直接链接到Azure AD帐户,这增加了混淆-相同的帐户,但不同!)
    这张图片总结了什么有效,什么无效(它与上面的解释是多余的):

相关问题