首页 > 解决方案 > OAuth 同意表单是否需要 Azure 的 User.Read 权限?

问题描述

我的多租户 Azure 应用程序只需要应用级 EWS 旧权限full_access_as_app即可运行。此应用程序级别的权限只能由管理员同意 - 它非常强大,因为它为应用程序提供了对租户中每个 EWS 邮箱的读取和写入权限。

如果我作为 Azure 租户的管理员,在 AAD 配置中仅在后台授予我的应用程序这个单一权限,那么当我为我的租户运行应用程序时,一切正常。

但是,当您在 Azure 中创建新应用时,Azure 始终假定您将自动需要用户级 Graph APIUser.Read权限。当您尝试删除权限时,您会收到此不祥的警告: 正确的应用程序功能需要此范围

如果我忽略它,交互式 OAuth 同意书将不起作用。错误消息如下所示。

客户端在客户端应用程序注册的请求权限中未列出任何“AAD Graph”权限。或者,管理员没有同意租户。或者,检查请求中的应用程序标识符以确保它与配置的客户端应用程序标识符匹配。请联系您的管理员以修复配置或代表租户同意。

换句话说,该应用程序似乎无法为其他任何人的租户运行,因为他们的管理员无法同意。

我的假设是,这是因为 Azure 正在使用User.Read权限来检查通过 OAuth 表单登录的人是否是管理员。换句话说,这个权限只需要这一次,在应用程序为管理员的租户运行之前。

查看实际的 OAuth 同意书,情况似乎确实如此。该应用程序想要登录并阅读我的个人资料,以检查我是否是管理员......或者在我看来是这样。 该应用程序希望: 使用对所有邮箱具有完全访问权限的 Exchange Web 服务。 登录并阅读用户资料。

我是对的吗?我能找到的文档很少。

标签: azureoauth

解决方案


推荐阅读