首页 文章

当尝试在ASP.NET MVC中使用users / id / assignlicense时,Microsoft Graph Api返回禁止响应

提问于
浏览
0

所以,基本上我有一个多租户应用程序,可以调用Graph API . 问题在于调用将许可证分配给用户 - POST / users / {id |的UserPrincipalName} / assignLicense .

在Azure App注册门户的权限部分中,我已在Azure AD和Graph API下提供了所有委派的权限 . Permissions Assigned screenshot.

然后,我使用管理员同意流程通过以下链接为组织中的所有用户提供了此应用程序的全局管理员同意: - https://login.microsoftonline.com/common/oauth2/authorize?client_id=ffa835f3-417f-415c-b8f5-6f8833f93901&response_type=code&redirect_uri=http%3a%2f%2flocalhost%3a8910%2f&nonce=1234&resource=https://graph.microsoft.com&prompt=admin_consent

管理员同意成功,这意味着此目录中的所有用户都已获得授权 .

现在,当我通过全局管理员登录到我的多租户应用程序时,对assignLicense endpoints 的调用是成功的,这意味着我的代码运行良好 .

但是,当非全局管理员登录到应用程序时,他也可以登录(由于上面给出的同意),但是当我调用图表api到AssignLicense时,我收到403 Forbidden错误 .

我无法理解我应该怎么做才能摆脱这个错误 .

1 回答

  • 0

    这看起来像一个有效的权限问题 . 来自https://developer.microsoft.com/en-us/graph/docs/concepts/permissions_reference

    对于委派权限,您的应用程序的有效权限将是已授予应用程序的委派权限(通过同意)和当前登录用户的权限的最低权限交集 . 您的应用永远不会拥有比登录用户更多的权限 . 在组织内,登录用户的权限可以由策略或一个或多个管理员角色的成员资格确定 . 有关管理员角色的详细信息,请参阅在Azure Active Directory中分配管理员角色 . 例如,假设您的应用已被授予User.ReadWrite.All Delegated权限 . 此权限名义上授予您的应用程序读取和更新组织中每个用户的配置文件的权限 . 如果登录用户是全局管理员,则您的应用程序将能够更新组织中每个用户的配置文件 . 但是,如果登录用户不是管理员角色,则您的应用只能更新已登录用户的 Profiles . 它将无法更新组织中其他用户的配置文件,因为它有权代表其行事的用户没有这些权限 .

相关问题