Microsoft Graph 安全性 API错误响应

命名空间:microsoft.graph

Microsoft Graph 安全性 API中的错误使用标准 HTTP 206 部分内容状态代码返回,并通过警告标头传递。

错误

Microsoft Graph 安全性 API是一种联合服务,可接收来自所有数据提供程序的多个响应。 当 Microsoft Graph 安全性 API收到 HTTP 错误时,它会以以下格式发送回警告标头:

{Vendor}/{Provider}/{StatusCode}/{LatencyInMs}

仅当其中一个数据提供程序返回 2xx 或 404 以外的错误代码时,此警告标头才会发送回客户端。 例如:

  • 如果未授予对资源的访问权限,可能会返回 HttpStatusCode.Forbidden (403) 。
  • 如果提供程序超时,则会在警告标头中返回 HttpStatusCode.GatewayTimeout (504) 。
  • 如果发生内部提供程序错误,警告标头中使用 HttpStatusCode.InternalServerError (500) 。

如果数据提供程序返回 2xx 或 404,则警告标头中不会显示,因为这些代码预期成功或未分别找到数据。 在联合系统中,预期找不到 404,因为很多时候数据只有一个或多个提供程序知道,但并非所有提供程序知道。

示例

用户请求 。security/alerts/{alert_id}

Provider 1: 404 (provider does not have a record of this alert ID)
Provider 2: 504 (provider timed out)
Provider 3: 200 (success)
Provider 4: 403 (customer has not licensed this provider)

由于 404 和 200 都是预期条件,因此警告标头包含以下项:

Warning : 199 - "{Vendor2}/{Provider 2}/504/10000",    (usual timeout limit is set at 10 seconds)
          199 - "{Vendor4}/{Provider 4}/403/10"       (Provider 4 rejected the request in 10 ms)

注意:每个 HTTP 标头都是子项的集合,因此用户可以枚举 Warning 标头并检查所有项。

约束

$top OData 查询参数的限制为 1000 个警报。 建议你在第一个 GET 查询中仅包括 $top,而不包括 $skip。 可使用 @odata.nextLink 进行分页。 如果需要使用 $skip,它具有 500 个警报的限制。 例如, /security/alerts?$top=10&$skip=500 返回 200 OK 响应代码,但 /security/alerts?$top=10&$skip=501 将返回 400 Bad Request 响应代码。 有关详细信息,请参阅 Microsoft Graph 安全性 API 错误响应

此限制的一种解决方法是将 $filter OData 查询参数与 eventDateTime Microsoft Graph 安全性 API中的警报实体的 结合使用,并将 ?$filter=eventDateTime gt {YYYY-MM-DDT00:00:00.000Z} dateTime 值替换为最后一个 (第 1500 个) 警报。 还可以为 eventDateTime设置范围;例如,alerts?$filter=eventDateTime gt 2018-11-11 T00:00:00.000Z&eventDateTime lt 2018-11-12 T00:00:00.000Z

如果在授权时遇到问题,请参阅授权和 Microsoft Graph 安全性 API