Azure应用程序错误地请求管理员同意?

时间:2019-07-24 05:36:58

标签: azure oauth-2.0 azure-active-directory microsoft-graph

我希望有人对我在Microsoft的Azure门户(portal.azure.com)中新注册的应用程序遇到的问题有所了解。

出现以下对话框时,我在登录时遇到的问题

  

admin consent dialog

错误代码和消息出现在右下角;

  

AADSTS90094:该操作只能由管理员执行。注销并以管理员身份登录,或与您组织的一位管理员联系。

在配置方面,我相信我已经将此设置设置为不需要,但需要管理员同意,但是可能缺少某些内容。

我的应用配置有;

Id令牌,单个承租人(网络)应用程序

  

flow configuration

已委派的用户同意权限,具有无管理员权限

  

app permissions

对于企业应用程序,配置设置为;

  • 已为用户启用登录:Yes
  • 需要用户分配:Yes
  • 用户可见:Yes
  • 已添加4个具有Default Access角色的用户
  • 允许用户请求访问此应用程序:No(已分配)

最后,在企业应用程序-用户设置配置下的azure目录中,我已将公司数据用户同意设置为Yes

  

Directory user consent

当我导航到应用程序URL或从myapps.microsoft.com中的应用程序导航时,都给我上面的对话框,要求管理员同意。

如果不需要,我不想授予管理员同意,因为这似乎有点像使用大锤来解决的问题。

我觉得我正在丢失一些大东西,或者做一些愚蠢的事情-请帮助,让我知道是否可以提供更多信息。

编辑1.1:

我的身份验证请求URL为:https://login.microsoftonline.com/<tenantid>/oauth2/v2.0/authorize?client_id=<clientid>&redirect_uri=<redirecturi>&response_mode=form_post&response_type=code id_token&scope=openid email profile offline_access User.Read User.ReadBasic.All Mail.ReadWrite&state=OpenIdConnect.AuthenticationProperties=<gibberish>&nonce=<gibberish>&x-client-SKU=ID_NET461&x-client-ver=5.4.0.0

(我将ASP.NET MVC与Microsoft的OpenId Connect身份验证库结合使用)

1 个答案:

答案 0 :(得分:1)

当用户同意不需要分配的应用程序(在允许用户同意的租户中,并且对于仅请求不需要管理员同意的许可的应用程序)时,会发生两件事:

  1. 记录应用程序的同意授予,请求的用户和委派的权限。
  2. 以“默认”应用角色将用户分配给该应用。

第二步看似令人惊讶,但它起着简单的作用:它确保用户在Azure AD访问面板(https://myapps.microsoft.com)中看到他们已同意的应用程序。 (Azure AD访问面板将向用户显示分配给他们的所有应用程序。)

如果用户可以通过触发用户同意来分配自己,则会破坏“需要用户分配”控制的目的。因此,当前,当将应用程序设置为需要用户分配时,完全不允许用户同意该应用程序。

今天,您有两种选择: 1.要求管理员为该应用程序授予租户范围的同意(例如,企业应用程序>权限>授予管理员同意,或应用程序注册> API权限>授予管理员同意)。 2.将应用配置为不需要用户分配,并通过检查“角色”声明将应用的代码更新为要求将用户分配给应用角色。