2017-10-11 71 views
7

我在https://apps.dev.microsoft.com创建的应用(平台:网络)微软图形API - AADSTS90094:补助金要求管理权限

这个程序需要某些权限管理员同意。我记得过去,使用管理员帐户访问https://login.microsoftonline.com/{tenant name}/adminconsent?client_id={application id}&state={some state data}&redirect_uri={redirect uri}以授予访问我们组织中只有管理员可以授予的资源的权限。从那里,用户需要提供用户级别的同意才能使用该应用程序。现在

,我可以成功地与一个管理员帐户登录和应用程序按预期工作,但我仍然得到一个提示,对于用户来说,以下消息:

You can't access this application APP NAME needs permission to access resources in your organization that only an admin can grant. Please ask an admin to grant permission to this app before you can use it.

Have an admin account? Sign in with that account

Return to the application without granting consent

错误消息是:AADSTS90094: The grant requires admin permission.似乎没有记录在任何地方..

如果我点击Have an admin account? Sign in with that account并使用管理员帐户登录,它可以正常工作,但用普通用户帐户再次尝试,我再次收到上述消息。

enter image description here

编辑: 所以我剥离下来的权限到最低限度。 作用域在我的应用程序现在:openidprofileuser.read 和Microsoft Graph权限是现在,对于委托权限Mail.SendUser.Read没有任何应用权限和我仍然可以获得上述消息给普通用户! 来自Microsoft的任何人都有关于AADSTS90094错误代码的一些信息?

+0

我只是为我的多租户应用程序调查同样的问题。你有没有找到什么? – sergej

+0

你好@sergej,没什么可悲的。这是我一天中最好的一部分。不知道过去几个月发生了什么变化,在一次性管理员同意后,类似的权利类似的应用程序曾用于工作。现在好像管理员同意不起作用,用户无法连接。 –

+0

您能否显示您为图形api添加的权限? –

回答

1

好的,所以我最终联系了Microsoft支持,因为截至目前为止,没有关于此错误消息的信息。

简而言之,Microsoft在权限方面做了一些最近的更改。在过去,如果您的应用需要openid,profileoffline_access中的任意一个,则可以将它们作为示波器放在您的应用中,但它们不在https://apps.dev.microsoft.com上。管理员会同意并且您的应用将正常运行。

你现在应该做的是您的应用范围与你有https://apps.dev.microsoft.com,否则你会继续得到该错误信息的权限,以便确保您有同样的事情双方现在,尤其是如果你习惯了旧的行为。

现在可以在开发者平台上为您的应用程序选择这三个范围/权限(openid,profileoffline_access)。

+0

你可以添加一些关于你的意思的细节吗?在应用程序中添加“范围”? – Sam

+1

你好@Sam。当然。为了检索访问令牌,您需要将您的请求传递给一些范围。它们将用于类似于以下内容的网址:https://login.microsoftonline.com/common/oauth2/v2.0/authorize?state=TDDBBAE9x40TQ4JKFHOSA&scope=openid+profile+user.read+mail.readwrite+mail。发送+ offline_access [...]'。注意'openid','profile','user.read'等等,这些都是示波器。最近MS发生了什么变化,现在需要在双方,应用程序以及'https:// apps.dev.microsoft.com'上具有相同的范围。不要犹豫,如果你需要更多的帮助。 –

+0

感谢您在此发布您的发现。我面临类似的问题,并且想知道您的解决方案是否适用于我,但我找不到在https://apps.dev上定义范围的UI。microsoft.com。我看到的只有清单文件的编辑器。自您发布以来有变化吗?我似乎记得,该网站看起来不同... –

0

管理员同意端点对动态范围和动态同意方案没有帮助。

使用管理员同意端点将授予在应用程序注册门户中注册的权限。您可以找到Microsoft Graph Permissions部分,然后添加您的应用程序需要的权限。在通过管理员同意终结点执行管理员同意后,您的应用可以为租户中的所有用户收集权限,包括管理员限定的作用域。

+0

我不需要动态范围或同意。消息在用户登录后弹出。这就是我在应用程序门户中所拥有的:委托权限:Mail.Send,User.Read,User.ReadBasic.All,User.Read。全部(仅管理员)'。应用程序权限:'Directory.ReadWrite.All(仅限管理员)','User.Read.All(仅管理员)'。我需要改变什么? –

+0

我测试你的场景,结果是当前知名的作用域(openid,profile,offline_access)会在管理员同意后请求用户的同意。这应该是同意默认。但是我没有复制你的场景,管理员范围在管理员同意后仍需要得到用户的同意。 –

0

我使用MSAL2.0端点(login.microsoft ...),我正在开发一个Multi-Tenant应用程序。

我的组织有2个租户

其中之一就是我们的基本实例Dev(我有全球管理员权限)。我在Tenant注册我的应用程序,我没有管理权限,并执行管理员同意在租户中的应用程序,我可以自己执行同意。我的用户可以成功登录并同意他们所需的资源。

但是,当我从拥有全局管理权限的帐户创建应用程序注册(所有融合应用程序apps.dev.mic)时,我的用户登录名为AADSTS90094 Error

我来“解决”这个错误是唯一的出路,

初始登录到应用范围将openid然后用户同意一点,那就是完成后我要做的另一使用为应用程序定义的范围登录并且一切正常。很明显,UX是不言而喻的。

+1

请更好地格式化您的答案,很难提取有用的信息,而OP可能会尝试您所做的一些事情。你不必描述你的整个设置和你正在创建的东西。简单地建议一个解决方案,并解释为什么它可能有帮助,使用逗号,空格和正确的大小写。 – Glubus