zoukankan      html  css  js  c++  java
  • 介绍Power Automate中基于HTTP请求触发的flow并增强其安全性

    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面的微软最有价值专家(Microsoft MVP),欢迎关注我的微信公众号 MSFTDynamics365erLuoYong ,回复411或者20200516可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!

    Power Automate中的Flow很多是基于事件触发或者定期触发,今天我们介绍下通过HTTP请求触发的flow。

    首先打开 https://flow.microsoft.com ,新建一个 Instance flow,触发器(trigger)为 When an HTTP request is received 。

     点击 Use sample payload to generate schema ,在弹出框中我粘贴下请求的示例json文件。

     输入后点击 Done 按钮。

     然后增加一个步骤,使用Request 这个connector中的 Response 这个action。

     返回的内容我设置如下,使用了一个表达式:concat(triggerBody()?['Name'],'你好!') 。

      

    保存后就会生成调用该flow的URL,如下示例:

      

    然后我用Postman来调用下:

     Flow中可以看到运行记录如下:

      

    根据 Rik de Koning 的文章 Securing your HTTP Request trigger in Microsoft Flow  ,可以使用类似下面的方法来限定只有某个flow可以调用它。

    也就是先看header 是否包括 x-ms-workflow-name 元素,且该元素的值等于 flow的id。

     当然还有别的办法,比如使用Key Vault。登录 https://portal.azure.com 创建一个 Key Vault。

     创建一个类似如下的secret:

     要能读取这个secret的值,需要至少授予连接用户 Secret Permissions 中的 Get权限。

     下面我对前面创建的flow添加 Azure Key Vault connector中的Get secret action。

     获取指定的secret的值如下:如果连接有问题,可以导航到 Data > Connections 去修复,如果是missing parameter是需要指定Key Vault的名称的。

    然后的check就根据这个Get secret步骤返回的Value值和请求Header中的元素的值(triggerOutputs()['headers']['secret'])做比较。

     下面这样调用,传递的secret的值是正确的就可以正常返回。

      

    但是从默认的运行记录中可以看到值:

     可以对这个步骤点击 Settings 。

      

    将这两个Preview属性(Secure Inputs 和Secure Outputs) 打开。

      

    再次添加这个输出参数的值可以看到有锁标识了。

      

    再次打开运行记录就看不到明文了, Content not shown due to security configurations. 

  • 相关阅读:
    MySQL
    MySQL
    MySQL
    javaScript之深度理解原型链
    javaScript之this的五种情况
    ES6之箭头函数中的this
    javaScript之跨浏览器的事件对象
    javaScript之事件处理程序
    javaScript之promise
    VUE之使用百度地图API
  • 原文地址:https://www.cnblogs.com/luoyong0201/p/Power_Automate_Secure_HTTP_Request_is_Received_Triggered_Flow.html
Copyright © 2011-2022 走看看