如何使用 Microsoft.Graph 库查询服务主体组成员资格?

How do I query service principal group membership with the Microsoft.Graph library?

最近,AAD 添加了将服务主体放入安全组的功能(). Given a service principal object ID, how do I query its security group memberships with the Microsoft.Graph library?我尝试了以下操作:

var groups = client.Users[servicePrincipalId].GetMemberGroups(true).Request().PostAsync().Result;

然后得到错误:

Microsoft.Graph.ServiceException: Code: Request_ResourceNotFound Message: Resource '$servicePrincipalId' does not exist or one of its queried reference-property objects are not present.

我尝试改用 DirectoryObject:

var groups = client.DirectoryObjects[servicePrincipalId].GetMemberGroups(true).Request().PostAsync().Result;

然后得到错误:

Microsoft.Graph.ServiceException: CodeMessage: Unsupported directory object class 'ServicePrincipal' specified by resource identifier.

如何获取有关服务主体的信息?是不是还不支持,我必须使用 REST API 之类的?我正在使用 1.17.0 Microsoft.Graph NuGet 包。

目前您必须使用 Microsoft.Graph.Beta library,它增加了对服务主体的支持:

var groups = client.ServicePrincipals[servicePrincipalId].GetMemberGroups(true).Request().PostAsync().Result;

您也可以使用 CheckMemberGroups(new string[] { groupId }) 方法。