【问题标题】:How does Event Grid + CloudEvents + Webhooks support updating the access_token?Event Grid + CloudEvents + Webhooks 如何支持更新 access_token?
【发布时间】:2020-08-16 10:58:02
【问题描述】:

CloudEvents 有一个用于事件传递的 webhook 规范:HTTP 1.1 Web Hooks for Event Delivery - Version 1.0。除其他外,CloudEvents Webhooks 规范详细说明了 Webhook 验证和授权的要求。如规范中所述,CloudEvents webhooks 授权方法“依赖于 OAuth 2.0 Bearer Token RFC6750 模型”。

Azure 事件网格支持 CloudEvents:Use CloudEvents v1.0 schema with Event Grid

Event Grid 对 webhook 授权的支持仅限于“在创建事件订阅时向 webhook URL 添加查询参数”,如下所述:Authenticating access to Azure Event Grid resources。

鉴于 OAuth 持有者令牌可以有 limited lifetime,因此我需要一种刷新令牌的方法。但是,据我所知,事件网格除了在定义 webhook 订阅时在查询参数中硬编码令牌之外没有提供任何机制。

我的理解正确吗?有什么建议吗?

编辑:在这种情况下,Webhook 端点是未托管在 Azure 上的外部端点。它是一个简单地支持 CloudEvents webhook 规范的第 3 方端点。

【问题讨论】:

    标签: webhooks azure-eventgrid cloudevents


    【解决方案1】:

    您的问题中提到的文件,例如Authenticate event delivery to webhook endpoints using Azure AD 不够清楚。似乎描述了(混合)两种方法来确保将事件传递到 webhook。

    1。 我确实建议使用本文档第一部分中描述的方法,例如使用 AAD 进行身份验证和授权 Azure 事件网格将事件传递到您的 webhook 端点处理程序。

    在这种情况下,订阅需要填充以下属性:

    azureActiveDirectoryTenantId
    azureActiveDirectoryApplicationIdOrUr 
    

    请注意,验证过程不依赖于上述属性,也就是说,您的订阅可以成功创建,但不会将事件传递到 webhook 端点以导致 AAD 授权错误。

    如果基于订阅 TenantId 和 ApplicationId 值的 AEG 将从 AAD 获取访问令牌(Bearer),则将事件传递到 webhook 端点Authorization 标头中带有访问令牌的处理程序。

    现在,您的订阅者处理程序有新的(有效的)访问令牌供其使用。

    2。 第二种方式,例如在 webhook url 地址中使用查询参数,就像你提到的那样工作。这个秘密值在创建订阅的过程中是硬编码的,它不由 AEG 管理(刷新/更新/等)。

    【讨论】:

    • 我最初认为使用 AAD 与我无关,因为 webhook 订阅者没有托管在 Azure 上,也根本没有集成到 AD 中。它使用 OAuth 和自己的授权服务器。 AAD认证支持这种情况吗?我现在将前往 AAD 文档...谢谢!
    • 案例 2 的解决方法是使用 刷新令牌,每 ~90 天更新一次订阅 webhook 端点 url。
    猜你喜欢
    • 2013-08-25
    • 2019-08-28
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 2017-08-30
    • 2015-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多