为什么使用 Graph API 的 licenseAssignmentStates 集合中缺少分配的许可证?
Why are assigned licenses missing from the licenseAssignmentStates collection using Graph API?
我的 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?我做错了什么还是图表 API 中的错误?如果是,快速修复它的最佳方法是什么,我们的应用程序需要这个吗?
非常感谢您!
我重现了您遇到的错误。
第 1 步:为用户添加许可证(Microsoft 365 商业标准版)
第二步:将许可证(Microsoft 365 E3)添加到组
第 3 步:将用户添加为该组的成员
然后,我获得了 2 个许可证,一个是直接(活动),另一个是通过组(错误:服务计划冲突)。当我请求 MS Graph API 获取 licenseAssignmentStates 和 assignedLicenses 时,我只找到错误之一。
步骤 4:从组许可中删除许可(Microsoft 365 E3),API响应直接(活动)许可。
第 5 步:将许可证(Dynamics 365 计划)添加到组
我获得了以下 2 个许可证,它们都是有效的。 API 正确回答。
我再次添加license(Microsoft 365 E3) 分组。 API 响应结果正确,其中包含一个错误和其他错误。
因此,许可证从 licenseAssignmentStates 集合中丢失似乎是 BUG。您可以删除错误的许可证来解决它。
Microsoft 已将其记录为错误,正在等待解决:https://github.com/microsoftgraph/microsoft-graph-docs/issues/9636#issuecomment-754933971
我的 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?我做错了什么还是图表 API 中的错误?如果是,快速修复它的最佳方法是什么,我们的应用程序需要这个吗?
非常感谢您!
我重现了您遇到的错误。
第 1 步:为用户添加许可证(Microsoft 365 商业标准版)
第二步:将许可证(Microsoft 365 E3)添加到组
第 3 步:将用户添加为该组的成员
然后,我获得了 2 个许可证,一个是直接(活动),另一个是通过组(错误:服务计划冲突)。当我请求 MS Graph API 获取 licenseAssignmentStates 和 assignedLicenses 时,我只找到错误之一。
步骤 4:从组许可中删除许可(Microsoft 365 E3),API响应直接(活动)许可。
第 5 步:将许可证(Dynamics 365 计划)添加到组
我获得了以下 2 个许可证,它们都是有效的。 API 正确回答。
我再次添加license(Microsoft 365 E3) 分组。 API 响应结果正确,其中包含一个错误和其他错误。
因此,许可证从 licenseAssignmentStates 集合中丢失似乎是 BUG。您可以删除错误的许可证来解决它。
Microsoft 已将其记录为错误,正在等待解决:https://github.com/microsoftgraph/microsoft-graph-docs/issues/9636#issuecomment-754933971