首页 > 解决方案 > 为什么使用 Graph API 的 licenseAssignmentStates 集合中缺少分配的许可证?

问题描述

我的 Azure AD 中的用户有两个许可证分配,一个是直接分配的,一个是通过组分配的:

Azure AD 屏幕截图

查询用户时,licenseAssignmentStates 集合中缺少其中一个许可证。属性assignedLicenses 包含另一个许可证。

https://graph.microsoft.com/v1.0/users/[UPN]?$select=licenseAssignmentStates,assignedLicenses

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users(licenseAssignmentStates,assignedLicenses)/$entity",
    "licenseAssignmentStates": [
        {
            "skuId": "18181a46-0d4e-45cd-891e-60aabd171b4e",
            "disabledPlans": [],
            "assignedByGroup": "19f1820f-21d0-4d68-8c51-678a752168bc",
            "state": "Error",
            "error": "MutuallyExclusiveViolation"
        }
    ],
    "assignedLicenses": [
        {
            "disabledPlans": [
                "aebd3021-9f8f-4bf8-bbe3-0ed2f4f047a1",
                "8c7d2df8-86f0-4902-b2ed-a0458298f3b3",
                "57ff2da0-773e-42df-b2af-ffb7a2317929",
                "a23b959c-7ce8-4e57-9140-b90eb88a9e97",
                "e95bec33-7c88-4a70-8e19-b10bd9d0c014",
                "5dbe027f-2339-4123-9542-606e4d348a72"
            ],
            "skuId": "6fd2c87f-b296-42f0-b197-1e91e994b900"
        }
    ]
}

这是一个巨大的问题,因为如果许可证不包含在 licenseAssignmentStates 集合中,就不可能知道许可证分配的状态或它是否已由组分配。

在添加间接许可分配之前,直接许可分配是在 licenseAssignmentStates 集合中返回的,所以我认为与此无关。

如何获取所有已分配许可证的 licenseAssignmentStates?我做错了什么还是 Graph API 中的错误?如果是,那么快速修复它的最佳方法是什么,我们的应用程序需要这个?

非常感谢您!

标签: azure-active-directorymicrosoft-graph-apimicrosoft-graph-mail

解决方案


我重现了您遇到的错误。

第 1 步:向用户添加许可证(Microsoft 365 Business Standard)

步骤 2:将许可证(Microsoft 365 E3)添加到组

Step3:将用户添加为该组的成员

然后,我获得了 2 个许可证,一个是直接的(活动的),另一个是通过组的(错误:冲突的服务计划)。当我请求 MS Graph API 获取 licenseAssignmentStates 和 assignedLicenses 时,我只发现错误之一。

在此处输入图像描述

在此处输入图像描述

步骤 4:从组许可证中删除许可证(Microsoft 365 E3),API 响应直接(主动)一个。

第 5 步:将许可证(Dynamics 365 计划)添加到组

我获得了以下 2 个许可证,两者都是活动的。API 正确响应它们。

在此处输入图像描述

在此处输入图像描述

我再次将许可证(Microsoft 365 E3)添加到组中。API 响应结果正确,包含错误一和其他。

在此处输入图像描述

在此处输入图像描述

因此,licenseAssignmentStates 集合中的许可证似乎遗漏了 BUG。您可以删除错误的许可证来解决它。


推荐阅读