有没有办法升级和降级Azure AD / Microsoft Graph访问级别?
例如,用户是否可以通过Web应用程序注册登录,然后升级对One Drive的访问权限或降级回登录?我一直在寻找一种方法来取消对用户访问权限的授权,然后使用不同的权限集重新授权,但无法找到取消授权的方法。
答案 0 :(得分:4)
如果您使用V2端点,则可以获得增量同意:https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-appmodel-v2-overview。 在那里,您可以指定在将用户重定向到登录时要求的范围。
因此,您可以在开始时需要基本功能,然后如果他们想要启用其他功能/您发布需要其他权限的更新,则可以非常轻松地添加这些功能。
至于另一个方向,没有。
一旦用户同意某些权限,撤消同意的唯一方法是删除将用户映射到应用程序服务主体的oauth2PermissionGrant
对象。
如果是应用程序权限,则需要从服务主体中删除appRoleAssignment
。
所以这是可能的,但您必须自己调用Microsoft Graph API。
您可以通过以下方式获取所有权限授予:https://graph.microsoft.com/beta/oauth2PermissionGrants
并返回此类授权对象:
{
"clientId": "e846195b-9b20-4001-ad84-5ab5de5531e6",
"consentType": "AllPrincipals",
"expiryTime": "2018-05-04T09:39:32.9697945Z",
"id": "WxlG6CCbAUCthFq13lUx5s7PF6398j5LkfWqCoLpQBI",
"principalId": null,
"resourceId": "ad17cfce-f2fd-4b3e-91f5-aa0a82e94012",
"scope": "User.Read Directory.AccessAsUser.All",
"startTime": "0001-01-01T00:00:00Z"
}
这个实际上是管理员同意的结果(consentType = AllPrincipals和principalId = null)。
对于常规用户同意,principalId将是用户的id。
clientId
是被授予访问权限的服务主体的ID,resourceId
是目标服务主体。
您还可以将结果过滤到特定用户,例如:https://graph.microsoft.com/beta/oauth2PermissionGrants?$filter=principalId eq '73c38a25-23eb-44eb-bf63-4aa987b2ef19'
然后,您可以通过使用以下正文运行PATCH到https://graph.microsoft.com/beta/oauth2PermissionGrants/WxlG6CCbAUCthFq13lUx5s7PF6398j5LkfWqCoLpQBI
来更新授权以更改已批准的范围:
{
"scope": "User.Read"
}
您可以通过在同一网址上运行DELETE来完全删除授权。