请求批准时的 Azure OAuth2 流程

Azure OAuth2 flow when approval is requested

我们的应用程序实施 Azure OAuth2 (v2) user-consent 流程并使用不需要管理员同意 oauth2 user 的 Graph API 范围。最近我们注意到我们的应用 运行 的一些用户进入了这个 Auth 屏幕:"The app requires admin's approval".

是否因为租户组织禁用了应用user-consent?

基于 user-consent 的 OAuth2 流程给我们留下了什么?在管理员批准后是否仍然可以获得用户访问令牌,或者唯一的方法是使用 OAuth2 守护进程 oauth2 daemon?在这样的对话之后的回调中,我们如何知道管理员批准已被授予?

一个相关问题。在 user-consent 未被禁用但授权的是管理员用户的情况下,有一个选项“代表您的组织同意”。我们如何在此对话框的回调中知道管理员选中了该框?并且确实这意味着我们也需要使用 OAuth2 守护程序流程吗?

谢谢

Is that because the tenant Org disabled user-consent for apps?

是的,此设置位于 企业应用程序->用户设置

Is it still possible to get a user access token after an admin's approval

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

In a callback after such a dialog how can we know that the admin approval has been given?

管理员审核请求后,您将收到电子邮件通知。

In cases where user-consent is not disabled but it's an admin user that authorizes there is an option 'Consent on behalf of your Organization". How can we know in the callback from this dialog that the admin checked that box?

管理员选中此框后,该租户下的用户将不会看到同意对话框。另外,你可以在Azure portal->App registrations->your app->API permissions中查看应用的状态。

用户同意或管理员同意有两个可能的原因

用户同意的两种可能情况

1)在禁用用户同意的租户中,例如,用户无法同意任何权限。 Azure AD--> Enterprise apps ---> User settings ---> Users can consent to apps.

2) 用户分配:Azure AD---> 企业应用程序-->(select 应用程序)--> 属性--> 需要用户分配

对于Admin Consent两种可能的情况

1) 仅限应用程序的权限始终需要征得租户管理员的同意。如果您的应用程序请求仅限应用程序的权限并且用户尝试登录该应用程序,则会显示一条错误消息,指出用户无法同意。

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

解决方案:

  1. 提示=admin_consent参数(向管理员请求权限)可以用作OAuth2/OpenID连接授权请求中的参数以授予管理员同意。

  2. 启用管理员同意工作流程,这为最终用户提供了一种请求访问需要管理员同意的应用程序的方法。

  3. 请参阅 Microsoft Graph 的权限文档API 指明哪些权限需要管理员同意。

是我们不了解。经过更多测试后,我们意识到我们使用了 prompt=consent,这就是为什么始终显示同意 window 的原因。谢谢。