CloudEvents有一个用于事件传递的webhooks规范:HTTP 1.1事件传递的webhooks-版本1.0。CloudEvents Webhooks规范详细说明了webhook验证和授权的要求。如规范中所述,CloudEvents webhooks授权方法"依赖于OAuth 2.0承载令牌RFC6750模型"。
Azure事件网格支持CloudEvents:将CloudEvents v1.0架构与事件网格一起使用
事件网格对webhook授权的支持仅限于"在创建事件订阅时将查询参数添加到webhook URL",如下所述:验证对Azure事件网格资源的访问。
考虑到OAuth承载令牌的生存期可能有限,因此我需要一种刷新令牌的方法。然而,据我所知,事件网格除了在定义webhook订阅时对查询参数中的令牌进行硬编码外,没有提供其他机制
我的理解正确吗?有什么建议吗
编辑:在这种情况下,webhook端点是一个未托管在Azure上的外部端点。它是一个只支持CloudEvents webhook规范的第三方端点。
您的问题中提到的文档(如使用Azure AD向webhook端点传递身份验证事件(不够清楚。看起来有两种方法(混合(描述了如何将事件传递到webhook。
1。我建议使用本文档第一部分中描述的方法,例如使用AAD来验证和授权Azure事件网格将事件传递到您的webhook端点处理程序。
在这种情况下,需要订阅来填充以下属性:
azureActiveDirectoryTenantId
azureActiveDirectoryApplicationIdOrUr
请注意,验证过程不依赖于上述属性,换句话说,您的订阅可以成功创建,但由于AAD授权错误,事件不会传递到webhook端点。
如果基于订阅TenantId和ApplicationId值的AEG将从AAD获取访问令牌(Bearer(,则会将事件传递到webhook端点处理程序,并在Authorization标头中包含访问令牌。
现在,您的订阅者处理程序具有新的(有效的(访问令牌以供使用。
2。第二种方法,例如在webhook url地址中使用查询参数,就像您提到的那样工作。这个秘密值在创建订阅的过程中是硬编码的,它不由AEG管理(刷新/更新等(。