请求批准时的Azure OAuth2流程

问题描述 投票:0回答:1

我们的应用实现了Azure OAuth2 (v2)用户同意流程,并使用了不需要管理员同意的Graph API作用域。oauth2用户. 最近我们注意到,我们的一些用户的应用程序运行到这个Auth屏幕。"该应用程序需要管理员的批准"。

screenshot

是因为租户Org禁用了应用的用户同意吗?

这让我们基于用户同意的OAuth2流向何方?是否还能在管理员审批后获得用户访问令牌,还是只有使用OAuth2守护程序流转了 oauth2守护进程? 在这样的对话框后的回调中,我们如何知道管理员的批准已经被授予?

一个相关的问题。在用户同意没有被禁用的情况下,如果是管理员用户授权,有一个选项 "代表你的组织同意"。我们如何从这个对话框的回调中知道管理员勾选了这个选项?这是否意味着我们需要使用OAuth2守护程序流呢?

谢谢你的帮助

azure-active-directory azure-ad-graph-api office365api
1个回答
0
投票

是因为租户Org禁用了应用程序的用户同意吗?

是的,这个设置是在 企业应用->用户设置.

enter image description here

管理员批准后,还可以获得用户访问令牌吗?

是的,你仍然可以在管理员批准后获得用户访问令牌。

在这样的对话框后的回调中,我们如何知道管理员已经批准了?

一旦你的管理员审核了这个请求,你会通过邮件通知你。

如果用户同意没有被禁用,但授权的是管理员用户,则有一个选项 "代表您的组织同意"。我们如何从这个对话框的回调中知道管理员勾选了这个选项?

一旦管理员勾选了该框,该租户下的用户将不会看到同意对话框。另外,你还可以在Azure portal-&gt中检查应用程序的状态。应用注册->你的应用-&gt。API权限.

enter image description here


1
投票

是我们缺乏了解。经过更多的测试,我们意识到我们使用了提示=同意,这就是为什么同意窗口总是显示。谢谢您。


0
投票

有两种可能的原因,用户同意或管理员同意。

对于用户同意有两种可能的情况

1)在用户同意被禁用的租户中,例如,用户不能同意任何权限。Azure AD---> 企业应用---> 用户设置---> 用户可以同意应用。

2) 用户分配 :Azure AD---> 企业应用---> (选择应用)---> 属性---> 需要进行用户分配。

enter image description here

对于 政府同意 两种情况

1) 仅限应用的权限总是需要租户管理员的同意。如果您的应用程序请求只允许应用程序,而用户试图登录应用程序,则会显示错误信息,表示用户无法同意。

2)某些委托权限也需要租户管理员的同意。例如,以签入用户的身份向 Azure AD 写回的能力需要租户管理员的同意。

解决方案 。

  1. prompt=admin_consent参数(向管理员请求权限)可以作为OAuth2OpenID Connect授权请求中的一个参数来授予管理员同意。

  2. 启用管理员同意工作流,让终端用户有办法请求访问需要管理员同意的应用程序。

  3. 参考Microsoft Graph API的权限文档,说明哪些权限需要管理员同意。

© www.soinside.com 2019 - 2024. All rights reserved.