【问题标题】:Make an API call on the group info change in Azure AD对 Azure AD 中的组信息更改进行 API 调用
【发布时间】:2019-04-05 19:00:32
【问题描述】:

当 Azure 广告中的任何用户组信息发生更改时,我正在尝试获取通知(可能会在任何更改时提醒第三方 api)。

我在 Microsoft Graph 中阅读了有关订阅的信息,但从我阅读的内容来看,它是针对每个用户的。

是否可以通过 Microsoft graph 或任何其他方法为租户中的所有用户获取组更改?

提前致谢。

【问题讨论】:

    标签: c# .net-core azure-active-directory microsoft-graph-api


    【解决方案1】:

    使用Microsoft Graph change notifications,您可以在所有组上使用create a subscription(又名webhook)(即update 订阅groups 资源)。这将包括任何群组成员更改的通知。

    创建订阅:

    POST https://graph.microsoft.com/v1.0/subscriptions
    
    {
      "changeType": "updated",
      "notificationUrl": "https://www.example.com/notifications",
      "resource": "groups",
      "expirationDateTime": "2019-04-06T14:55:47.082Z"
    }
    

    在此示例通知中,id "4300f326-4062-4daf-9b91-018f82e87361" 的对象已添加到id4f747e07-50c1-4797-8eba-a2bb7104bfc4 的组中:

    {
        "value": [
            {
                "changeType": "updated",
                "clientState": null,
                "resource": "Groups/4f747e07-50c1-4797-8eba-a2bb7104bfc4",
                "resourceData": {
                    "@odata.type": "#Microsoft.Graph.Group",
                    "@odata.id": "Groups/4f747e07-50c1-4797-8eba-a2bb7104bfc4",
                    "id": "4f747e07-50c1-4797-8eba-a2bb7104bfc4",
                    "organizationId": "1c411c5e-78cc-4e89-af5e-169408a540b8",
                    "sequenceNumber": 636899867048350977,
                    "members@delta": [
                        {
                            "id": "4300f326-4062-4daf-9b91-018f82e87361"
                        }
                    ]
                },
                "subscriptionExpirationDateTime": "2019-04-06T14:55:47.082+00:00",
                "subscriptionId": "448ed5dc-73e9-4c5a-9d4f-94bd7c5dd762",
                "tenantId": "1c411c5e-78cc-4e89-af5e-169408a540b8"
            }
        ]
    }
    

    这里,同一个用户已从组中删除(注意 members@delta 中项目中的 @removed 属性):

    {
        "value": [
            {
                "changeType": "updated",
                "clientState": null,
                "resource": "Groups/4f747e07-50c1-4797-8eba-a2bb7104bfc4",
                "resourceData": {
                    "@odata.type": "#Microsoft.Graph.Group",
                    "@odata.id": "Groups/4f747e07-50c1-4797-8eba-a2bb7104bfc4",
                    "id": "4f747e07-50c1-4797-8eba-a2bb7104bfc4",
                    "organizationId": "1c411c5e-78cc-4e89-af5e-169408a540b8",
                    "sequenceNumber": 636899869819085879,
                    "members@delta": [
                        {
                            "id": "4300f326-4062-4daf-9b91-018f82e87361",
                            "@removed": "deleted"
                        }
                    ]
                },
                "subscriptionExpirationDateTime": "2019-04-06T14:55:47.082+00:00",
                "subscriptionId": "448ed5dc-73e9-4c5a-9d4f-94bd7c5dd762",
                "tenantId": "1c411c5e-78cc-4e89-af5e-169408a540b8"
            }
        ]
    }
    

    【讨论】:

    • @Phillippe,感谢您的回复。那么members@delta 是用户ID 吗?其实我想知道基于用户的组变化。因此,当为租户中的任何用户添加/删除/修改组时,我想知道用户名。这样我就可以将它传递给第三方 API,以便他们可以在最后更新一些东西。
    • 我是新手,但是您如何创建通知URL?
    • 是否可以提供类似usres/groups这样的订阅资源,以便我可以根据用户得到组变化的通知?
    • @liroforum 我已经更新了答案,其中包含指向 Microsoft Graph 文档的链接,以帮助您入门。另见this video。是的,members@delta 将包含添加到组中的用户的 ID。 (或者,如果将组添加到组中,它可能是组 ID。)您可以使用此 ID 获取用户的完整详细信息(包括名称)。监视所有组并等待添加用户相当于监视所有用户并等待其中一个添加到组中。
    • 感谢菲利普的概念。
    猜你喜欢
    • 1970-01-01
    • 2015-01-06
    • 1970-01-01
    • 1970-01-01
    • 2022-07-29
    • 2017-04-08
    • 2016-08-15
    • 2022-10-20
    • 2018-12-19
    相关资源
    最近更新 更多