【问题标题】:Azure AD admin consent required when it shouldn't不需要时需要 Azure AD 管理员同意
【发布时间】:2017-05-20 02:56:39
【问题描述】:

我有 2 个租户:

  • 一个供我管理用户的组织使用 (A)
  • 我管理应用程序和权限的一个 (B)

我的 webapp 在租户 A 上,我在租户 B 上使用 Azure AD 在门户上配置了身份验证。

在租户 B 上,我仅使用一项不需要管理员同意的权限注册了该应用程序:Windows Azure Active Directory > 登录并阅读用户配置文件

当用户登录时,他收到以下错误:

AADSTS90093:此操作只能由管理员执行。退出并以管理员身份登录或联系您组织的一位管理员。

我认为不应引发此错误,因为应用程序所需的唯一权限不需要管理员。

编辑

这是我在未登录时尝试访问应用程序时重定向到的 URL

https://login.microsoftonline.com/d6ac45af-3289-4f79-a826-27824e1c467d/oauth2/authorize?response_type=code+id_token&redirect_uri=https%3A%2F%2Ftechnipfmc-tools-app-test.azurewebsites.net%2F.auth%2Flogin%2Faad%2Fcallback&client_id=d340f0ed-5eb3-43e8-9a50-c449649f3ee1&scope=openid+profile+email&response_mode=form_post&nonce=1895ec0ffef64447bbb712bdae61c7fb_20170521070654&state=redir%3D%252F

编辑 2

我找到了解决方案here

作为管理员,您还可以代表租户中的所有用户同意应用程序的委派权限。这将阻止同意对话框出现在租户中的每个用户上。您可以从应用程序页面的 Azure 门户执行此操作。在您的应用程序的设置刀片中,单击所需权限,然后单击授予权限按钮。

我不知道为什么必须这样做,因为我只使用不需要管理员同意的权限。

【问题讨论】:

  • Azure AD 中有一个设置,如果切换,将阻止用户自己进行任何同意,需要管理员同意才能获得任何权限。我会检查您的租户 A 是否启用了此设置。此设置位于 Azure Active Directory > 用户设置 > 企业应用程序中:用户可以同意应用代表他们访问公司数据。
  • 您在使用多租户吗?我遇到了类似的问题,但就我而言,我猜当新租户尝试通过(通用)应用程序注册访问环境时,第一次总是需要管理员同意

标签: azure-active-directory


【解决方案1】:

您的设置存在几个潜在问题:

  1. 您的授权请求已设置为特定租户,租户 ID 为 d6ac45af-3289-4f79-a826-27824e1c467d。只有来自该租户的用户才能登录。如果此tenantId 对应于您组织的用户,您在其中管理用户 (A),则忽略这一点。否则,您应该将其替换为该租户的 tenantId 或 common,这将允许来自任何租户的用户登录。
  2. 您的应用程序不是多租户。出于测试目的,我将tenantId 替换为common,但由于以下错误,我无法将其用于我的测试租户:AADSTS70001: Application with identifier 'd340f0ed-5eb3-43e8-9a50-c449649f3ee1' was not found in the directory <MY_TEST_TENANT>。这表明该应用程序未配置为多租户应用程序。这是you must explicitly turn on
  3. 您组织的租户 (A) 可能已禁用普通用户同意应用程序的功能。如果禁用此功能,则始终需要管理员同意才能在租户中设置应用程序。要测试是否是这种情况,请在上面的地址点 #1(使用 /common/)和 #2 并尝试使用任何其他租户。如果您能够与该其他租户而不是您组织的租户同意,那么您将知道您的组织需要管理员同意。

您应该查看How to sign in any Azure Active Directory (AD) user using the multi-tenant application pattern 文章,因为它更详细地解释了上述所有要点。

【讨论】:

  • 在第 1 点,当您说“只有该租户的用户才能登录”时,如果我将另一个租户的用户添加为来宾用户(邀请),他是否将其视为我的用户租户?该应用程序不应该是多租户的。所有用户都将由租户 B 管理,我会将其他租户的用户添加为访客用户(这是否被视为多租户?)
  • 请检查我的第二次编辑与解决方案。但我不明白为什么我必须这样做
  • 我遇到了与 op 类似的问题。我正在使用公共端点,并且在应用程序注册中明确打开了“多租户选项”。您的第 3 点很有趣,尽管我必须与面临问题的租户核实。由于在多租户环境中始终需要管理员同意,这可能会发生吗?
【解决方案2】:

我认为当您在登录 URL 中传递“&prompt=admin_consent”时会出现该错误。

即使您没有请求管理员权限,如果您传递该查询字符串,它也会尝试向您显示同意对话框,以便您可以代表整个租户进行同意,这是只有管理员才能执行的操作.

【讨论】:

  • 我检查了,我没有使用这个参数
  • 你能分享你正在拨打的电话的http跟踪吗?
  • 你的意思是登录网址吗?
  • 当然!我正在寻找更多的痕迹,比如获取令牌......
  • 请检查我的第二次编辑与解决方案。但我不明白为什么我必须这样做
猜你喜欢
  • 2020-02-19
  • 2020-06-24
  • 2022-01-19
  • 1970-01-01
  • 1970-01-01
  • 2021-09-20
  • 1970-01-01
  • 1970-01-01
  • 2018-02-15
相关资源
最近更新 更多