webhooks - Event Grid + CloudEvents + Webhooks 如何支持更新 access_token?
问题描述
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:将 CloudEvents v1.0 架构与事件网格一起使用
事件网格对 webhook 授权的支持仅限于“在创建事件订阅时向 webhook URL 添加查询参数”,如下所述:验证对 Azure 事件网格资源的访问。
鉴于 OAuth 持有者令牌的生命周期有限,因此我需要一种刷新令牌的方法。但是,据我所知,事件网格除了在定义 webhook 订阅时在查询参数中硬编码令牌之外没有提供任何机制。
我的理解正确吗?有什么建议吗?
编辑:在这种情况下,webhook 端点是未托管在 Azure 上的外部端点。它是一个简单地支持 CloudEvents webhooks 规范的第 3 方端点。
解决方案
您的问题中提到的文档(例如使用 Azure AD 将事件传递到 webhook 端点进行身份验证)不够清楚。看起来有描述(混合)两种方法如何确保将事件传递到 webhook。
1. 我建议使用本文档第一部分中描述的方式,例如使用 AAD 进行身份验证并授权 Azure 事件网格将事件传递到您的 webhook 端点处理程序。
在这种情况下,填充以下属性所需的订阅:
azureActiveDirectoryTenantId
azureActiveDirectoryApplicationIdOrUr
请注意,验证过程不依赖于上述属性,换句话说,您的订阅可以成功创建,但不会将事件传递到 webhook 端点,因为 AAD 授权错误。
在基于订阅TenantId和ApplicationId值的 AEG 将从 AAD 获取访问令牌(Bearer)的情况下,该事件将通过Authorization标头中的访问令牌传递到 Webhook 端点处理程序。
现在,您的订阅者处理程序有新的(有效的)访问令牌供其使用。
2.第二种方式,例如在webhook url地址中使用查询参数,就像你提到的那样工作。此秘密值在创建订阅的过程中被硬编码,并且不由 AEG 管理(刷新/更新/等)。
推荐阅读
- angular - Angular Universal - 多个 NetworkError
- ios - 在 PDF 上下文中渲染视图 - SwiftUI
- android - 错误:没有为此曲目选择国家或地区
- python-3.x - 如何在 pandas df 中计算标记化句子中的特定术语
- java - 我无法获得可在 Android 附件模式连接上读取的剩余字节数
- html - 使用 Excel VBA 发送 Outlook HTML 电子邮件会生成运行时错误
- optimization - 定义二维网格的算法
- flutter - 如何检查是否通过多个集合来查看文档是否存在
- powershell - Powershell比较问题
- javascript - 当我单击它时,我无法更改 div 的状态