GraphConnectorNotificationPlugin

模拟在 Teams 管理员 Center (TAC) 中启用或禁用 Microsoft Graph 连接器时的通知。 验证创建和删除外部连接的请求。

若要发出配置的通知请求,请在运行 Dev 代理的命令提示符会话中按 。w

命令提示符拆分为两部分的屏幕截图。顶部显示了开发人员代理发出模拟 Teams 管理员 中心通知。底部显示接收通知的 Microsoft Graph 连接器。

发出通知请求

使用 GraphConnectorNotificationPlugin 额外的功能扩展 , MockRequestPlugins 以模拟来自 TAC 的通知。

令牌 说明
@dynamic.validationToken 用于验证通知真实性的 JWT 令牌。 开发代理将其替换为由 Dev Proxy CA 证书签名的有效 JWT 令牌。

验证处理通知和发出 Graph 连接器请求

在模拟通知请求旁边, GraphConnectorNotificationPlugin 验证通知 API 是否正确处理通知并发出正确的 Microsoft Graph 请求。

为了处理 TAC 通知,插件会检查 API 是否发送没有正文的 202 接受响应。 此外,该插件会检查对 Microsoft Graph 终结点的 /external/connections/* POST 和 DELETE 请求。 它会检查请求是否包含标头以及 GraphConnectors-Ticket 通知中指定的票证。 如果任一检查失败,插件将记录错误。

插件实例定义

{
  "name": "GraphConnectorNotificationPlugin",
  "enabled": true,
  "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
  "configSection": "graphConnectorNotificationEnabled"
}

配置示例

{
  "graphConnectorNotificationEnabled": {
    "mockFile": "graph-connector-notification-enabled.json",
    "tenant": "fa15d692-e9c7-4460-a743-29f29522229",
    "audience": "00001111-aaaa-2222-bbbb-3333cccc4444"
  }
}

配置属性

属性 说明 默认 必需
audience Microsoft Graph 连接器用于对通知请求进行身份验证的Microsoft Entra应用注册 ID empty
mockFile 包含模拟请求的文件的路径 mock-request.json
tenant Microsoft Graph 连接器在其中创建外部连接的租户 ID empty

命令行选项

模拟请求文件示例

下面是几个 API 文件示例,这些文件定义有关客户信息的 CRUD API。

启用 Microsoft Graph 连接器 TAC 通知

下面是当用户启用 Microsoft Graph 连接器时 Teams 管理员 中心发送的通知示例。

{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.16.0/mockrequestplugin.schema.json",
  "request": {
    "url": "http://localhost:3000/api/notification",
    "method": "POST",
    "body": {
      "value": [
        {
          "changeType": "updated",
          "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
          "resource": "external",
          "clientState": null,
          "resourceData": {
            "@odata.type": "#Microsoft.Graph.connector",
            "@odata.id": "external",
            "id": "35177924-33fc-444d-bd51-f059ce385ec2",
            "state": "enabled",
            "connectorsTicket":"eyJhbGciOiJIUzI1"
          },
          "subscriptionExpirationDateTime": "2021-06-26T12:40:26.4436785-07:00",
          "tenantId": "fa15d692-e9c7-4460-a743-29f29522229"
        }
      ],
      "validationTokens": [ "@dynamic.validationToken" ]
    }
  }
}