我们的应用实现了Azure OAuth2 (v2)用户同意流程,并使用了不需要管理员同意的Graph API作用域。oauth2用户. 最近我们注意到,我们的一些用户的应用程序运行到这个Auth屏幕。"该应用程序需要管理员的批准"。
是因为租户Org禁用了应用的用户同意吗?
这让我们基于用户同意的OAuth2流向何方?是否还能在管理员审批后获得用户访问令牌,还是只有使用OAuth2守护程序流转了 oauth2守护进程? 在这样的对话框后的回调中,我们如何知道管理员的批准已经被授予?
一个相关的问题。在用户同意没有被禁用的情况下,如果是管理员用户授权,有一个选项 "代表你的组织同意"。我们如何从这个对话框的回调中知道管理员勾选了这个选项?这是否意味着我们需要使用OAuth2守护程序流呢?
谢谢你的帮助
是我们缺乏了解。经过更多的测试,我们意识到我们使用了提示=同意,这就是为什么同意窗口总是显示。谢谢您。
有两种可能的原因,用户同意或管理员同意。
对于用户同意有两种可能的情况
1)在用户同意被禁用的租户中,例如,用户不能同意任何权限。Azure AD---> 企业应用---> 用户设置---> 用户可以同意应用。
2) 用户分配 :Azure AD---> 企业应用---> (选择应用)---> 属性---> 需要进行用户分配。
对于 政府同意 两种情况
1) 仅限应用的权限总是需要租户管理员的同意。如果您的应用程序请求只允许应用程序,而用户试图登录应用程序,则会显示错误信息,表示用户无法同意。
2)某些委托权限也需要租户管理员的同意。例如,以签入用户的身份向 Azure AD 写回的能力需要租户管理员的同意。
解决方案 。
prompt=admin_consent参数(向管理员请求权限)可以作为OAuth2OpenID Connect授权请求中的一个参数来授予管理员同意。
启用管理员同意工作流,让终端用户有办法请求访问需要管理员同意的应用程序。
参考Microsoft Graph API的权限文档,说明哪些权限需要管理员同意。