我们正在将Azure Logic应用程序与webhooks一起使用。
Webhooks正在通过Azure APIM调用一些API(服务矩阵后端-但这无关紧要)。完成特定工作后,API只需按书就调用Logic App的webhook回调。
另一方面,在洛杉矶的触发器上有IP范围限制设置。直到最近,一切都运行良好-在我们的某些环境中,有时来自API的回调调用失败-显然是因为Logic App无法识别IP。
第一个问题:为什么限制也适用于回调-这些不是实际的触发器?
第二个问题:在相同的限制条件下,回调在我们的某些环境中仍然有可能工作的可能性。
至于IP限制,请求连接器和HTTP WebHook连接器通过其处理所有传入请求的网关是相同的。虽然您可能在此处使用操作,但有一个WebHook触发器的工作方式类似,但它作为触发器。
至于为什么有时会失败,则取决于将请求从API路由到Logic Apps的方式。确保仅从单个IP访问的一种方法是将这些回调路由到APIM,然后让APIM将请求转发到您的Logic Apps。这样,对Logic Apps的所有请求都将来自APIM。
要通过APIM路由回调请求,您将需要APIM中的特殊API /操作,该请求会将请求转发到在标头或查询参数中传递的URL。
因此,与其直接调用回调URL,不如使用自定义标头中的回调URL或作为查询参数来调用此APIM端点。此操作的APIM策略将使用set-backend-service
和rewrite-uri
策略将此调用转发到逻辑应用程序端点。
回调URL本身是由逻辑应用程序的webhook控件生成的。如何在两者之间引入APIM?
或者-如何在Logic Apps上重新设置访问控制限制以允许任何IP?为了提供更多的见解,逻辑应用程序通过重复触发(因此,没有外部http端点触发其启动)。只是它包含一个webhook元素,并且一直用于IP限制...直到最近。允许任何IP安全吗?我该怎么做-我的意思是arm模板如何查找“任何IP”案例?
更新了我的答案,以详细说明如何设置APIM操作来实现此目的。通常最好限制IP以防止滥用,但我想您可以根据您的情况进行更改,因为不会触发滥用。在ARM模板中,
accessControl: {}
应该只有一个空白。