猿问

Webhook 订阅验证消息中没有 ClientState

我目前正在订阅日历活动:


var request = graphClient.Subscriptions.Request();


var result = await request.AddAsync(

    new Subscription {

        ChangeType = "created,updated,deleted",

            NotificationUrl = notificationUrl,

            Resource = "/users/" + userId + "/" + resource,

            ExpirationDateTime = DateTimeOffset.UtcNow.AddMinutes(4230),

            ClientState = "my-subscription-identifier"

    }

);

可以声明 a ClientState,因此当收到通知时,我可以通过将ClientState与创建订阅请求中发送的状态进行比较来处理它?


在我发送订阅请求后,服务器向我发送了一条验证消息。我缺少的是ClientState来自 Microsoft Graph 的验证请求。


在更改通知下的文档中,请求的描述如下:


POST https://{notificationUrl}?validationToken={TokenDefinedByMicrosoftGraph}

ClientState: {Data sent in ClientState value in subscription request (if any)}

不幸的是,我无法在验证请求(或任何其他部分)的正文中找到客户端状态。


客户状态声明是否正确?


如果是,为什么ClientState不在文档中描述的验证请求中(因为出于安全原因它看起来很重要)?


缥缈止盈
浏览 104回答 1
1回答

慕尼黑5688855

初始验证的目标是让 Microsoft 验证客户端的通知 URL:它已启动和响应,并且它可以接受通知。验证旨在无副作用且不披露任何信息。到目前为止,我们还没有遇到包含 clientState 有用的场景,这就是我们没有将它包含在验证请求中的原因。如果您有一个案例,在此请求中包含更多信息会很有用(例如,作为更大场景/工作流程的一部分),您能否简要描述一下?注意:我们将很快更新文档以与 API 行为保持一致。
随时随地看视频慕课网APP
我要回答