【问题标题】:Microsoft Graph Webhook Missing ClientStateMicrosoft Graph Webhook 缺少 ClientState
【发布时间】:2017-08-07 19:46:57
【问题描述】:

我在启动 Microsoft Graph Webhook 订阅时遇到问题(尤其是邮箱)。启动订阅时,似乎 Microsoft 接受了我为配置订阅而发送的所有参数,但总订阅失败,因为它从我配置的端点接收到非 2xx 响应。

我的端点将401 发送回 Microsoft 的原因是因为他们的包含订阅验证令牌的 POST 缺少 clientState。

我正在使用 clientState 键值对来验证 Microsoft 与我的端点之间的所有通信。如果我的端点没有看到正确的 clientState,它将返回 401

对我可能遗漏的内容有什么想法,或者我是否应该以不同的方式解决这个问题?在我看来,让我的端点接受未经身份验证的 GET/POST 不是一种选择。

使用 POST 方法的示例请求正文,包括标头中的 API 密钥:

{
    "changeType": "created",
    "clientState": "testClientState",
    "resource": "users/<UserName>/messages",
    "expirationDateTime": "2017-08-10T10:24:57.0000000Z",
    "notificationUrl": "<EndpointURL>"
}

微软返回错误:

"error": {
    "code": "InvalidRequest",
    "message": "Subscription validation request failed. Must respond with 200 OK to this request.",
    "innerError": {
        "request-id": "adf7fc7b-6b14-4422-8526-c1391be8dd27",
        "date": "2017-08-07T16:24:59"
    }
}

在我的端点收到验证令牌之前,我了解一切都按预期工作,因为我收到了验证令牌,但我的端点拒绝它,因为它缺少客户端状态。

端点日志片段:

queryStringParameters": {
    "validationToken": "<ValidationToken sent by Microsoft>"
}

我的 API 端点逻辑基于 Microsoft 的一些开发人员指南。特别是对于订阅创建,我是using this guide

看来这个问题是also asked but not answered on GitHub

【问题讨论】:

    标签: microsoft-graph-api


    【解决方案1】:

    我代表 Microsoft Graph Web hooks 团队...

    我们在我们的 MS Graph 服务日志中验证了您的请求,并确认它在订阅验证阶段失败,因为来自您的端点的 HTTP 状态代码 =“未授权”...到目前为止,根据您的观察,一切都是正确的...

    按照设计,MS Graph Web 挂钩不会将 clientState 标头作为订阅验证请求的一部分发送。请不要在订阅验证期间期待此标头。

    更多信息

    1. 您本来希望收到 clientState 作为验证请求标头的一部分,因为 Office365 图形将它发送到 https://msdn.microsoft.com/en-us/office/office365/api/notify-rest-operations。 Office 365 Graph 不同于 MS Graph ...
    2. https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/subscription_post_subscriptions 上观察到此问题对文档进行了一些改进...示例发布者通知有效负载,即在成功订阅后与订阅验证一起提及...我们已修复这些问题。

    【讨论】:

    • 请确认:我的回复是否回答了您的问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 2019-05-29
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多