获取将服务主体添加为成员的所有AAD组

时间:2020-04-20 16:40:24

标签: azure azure-active-directory

我有一个场景,我需要为我的API编写功能测试。 API使用Azure AD身份验证。系统中有多个角色,并且根据不同AD组的成员身份来确定用户的角色。 所以对于功能测试,我需要不同组的不同用户。

我创建了具有订阅中贡献者权限的服务主体,并将它们添加到组中,并按照Microsoft graph Application type API权限进行了授予。 -Application.Read.All -Directory.Read.All

现在,我使用这些API来完成我的用例。

1- https://login.microsoftonline.com/ {tenant-Id} / oauth2 / token

获取针对服务主体的访问令牌。

2- GET https://graph.microsoft.com/v1.0/me/memberOf

以获取用户组的列表。但是我得到了服务主体身份验证令牌的跟踪响应。

{
    "error": {
        "code": "Request_ResourceNotFound",
        "message": "Resource 'xxxx471-bxxxa-45a2-b61b-18xxxxx42af88' does not exist or one of its queried reference-property objects are not present.",
        "innerError": {
            "request-id": "fxxxxc41-319e-xxxx-xxxx-360xxxx58077",
            "date": "2020-04-13T11:41:01"
        }
    }
}

我也尝试过

3- https://graph.microsoft.com/v1.0/users/{princialId}/memberOf

并获得以下回复

    "error": {
        "code": "Request_ResourceNotFound",
        "message": "Resource 'xxxxx-xxxx-xxxx-b61b-18421142af88' does not exist or one of its queried reference-property objects are not present.",
        "innerError": {
            "request-id": "fxxxxc41-319e-xxxx-xxxx-360xxxx58077",
            "date": "2020-04-14T05:59:03"
        }
    }
}

我使用了在天蓝色广告中注册的应用的对象ID。当我使用以下命令使用Power Shell搜索服务主体时,发现与Object_Id不同于在Azure门户上的AD应用程序中编写的Object_Id

命令:get-AzureADServicePrincipal

使用此Object_Id,我可以使用Beta服务获取服务负责人的组。

https://graph.microsoft.com/beta/servicePrincipals/ {对象ID} / memberOf

任何人都可以解释为什么我无法使用v1.0服务获得服务主体组。 谢谢

2 个答案:

答案 0 :(得分:0)

任何人都可以解释为什么我无法使用v1.0服务获得服务主体组。

由于v1.0版本不支持此API GET /servicePrincipals/{id}/memberOf,因此目前仅在Beta版本中可用。

您可以检查此文档-List servicePrincipal memberOf,用Version选择1.0,然后会显示如下提示消息。

enter image description here

enter image description here


我使用了在天蓝色广告中注册的应用的对象ID。当我使用以下命令使用Power Shell搜索服务主体时,发现与Object_Id不同于在Azure门户上的AD应用程序中编写的Object_Id

服务主体的Object Id与应用程序注册的Enterprise applications不同,从powershell那里获得的是正确的,此外,您也可以在from apiclient import errors的门户中找到它。如下所示。

enter image description here

答案 1 :(得分:0)

我同意Beta服务不是V1.0的一部分,而是根据V1文档

https://graph.microsoft.com/v1.0/users/ {id | userPrincipalName} / memberOf

应该工作。

请访问 https://docs.microsoft.com/en-us/graph/api/user-list-memberof?view=graph-rest-1.0&tabs=http

Please find documetation image here