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

本文接前面的博文: Power Automate中通过Azure REST API获取Key Vault中secret的值 。为了减少重复,我创建一个custom connector。

相关的官方文档请参考 Custom ConnectorsCreate a custom connector from scratchCreate a Postman collection for a custom connector、 Create a custom connector from a Postman collection

登录 https://make.powerapps.com/ 或者 https://flow.microsoft.com ,点击左边的 Data > Custom Connectors ,然后在点击右边的 New custom connector ,我这里使用 Create from blank。

Power Automate创建并使用Custom Connector_java

 

 我这里取个有意义的名字,如下,点击 Continue 按钮。

Power Automate创建并使用Custom Connector_java_02

  

我这里上传了一个图片作为connector的icon,写了描述,当然用的是https,Host我这里填写的是 luoyongkv.vault.azure.net,然后点击最下面的 Security -> 继续下一步。

Power Automate创建并使用Custom Connector_java_03

 

 认证类型(Authentication type)我选择 OAuth 2.0。

Power Automate创建并使用Custom Connector_java_04

 

 然后其他各项目填写如下,Identity Provider我选择Azure Active Directory,Login url可以保持默认的不变,其余的如实填写然后点击右上角的 Create connector。

Power Automate创建并使用Custom Connector_java_05

 

 保存成功后会生成 Redirect URL,复制下来。

Power Automate创建并使用Custom Connector_java_06

 

 在新页面中登录 https://portal.azure.com ,打开前面创建的 app,点击左侧的 Authentication ,在右边的Redirect URIs中增加前面步骤复制的 Redirect URL的值。

Power Automate创建并使用Custom Connector_java_07

 

  继续Custom connector中的Definition步骤。点击 New action 按钮。

Power Automate创建并使用Custom Connector_java_08

 

 

设置如下,然后点击 Request 中的 Import from sample。

Power Automate创建并使用Custom Connector_java_09

 

设置如下,用到的url是:https://luoyongkv.vault.azure.net/secrets/{secretName}?api-version={apiVersion} ,{}中的值会被识别为参数。

Power Automate创建并使用Custom Connector_java_10

  可以看到生成了两个参数,我这里点击api-version参数的 Edit 菜单。

Power Automate创建并使用Custom Connector_java_11

 

 为它设置为必须输入后点击右上角的 Update connector 按钮,再点击 <- Back 链接回到前面步骤。

Power Automate创建并使用Custom Connector_java_12

 

 点击 Response 下面的 Add default response 链接。

Power Automate创建并使用Custom Connector_java_13

 

我这里粘贴的json如下,设置如下图,点击 Import 按钮,再点击右下角的 Test -> 链接。

Power Automate创建并使用Custom Connector_java_14

{
    "value": "LuoYong'sSecret",
    "id": "https://luoyongkv.vault.azure.net/secrets/Secret/51ecd8873ffa42a188a5c9510ca78197",
    "attributes": {
        "enabled": true,
        "created": 1589625878,
        "updated": 1589625878,
        "recoveryLevel": "Recoverable+Purgeable"
    }
}

Power Automate创建并使用Custom Connector_java_14

Power Automate创建并使用Custom Connector_java_16

 

 进入完成创建Custom connector的最后一个步骤,点击 +New connection 链接。参数值目前可以不设置。

Power Automate创建并使用Custom Connector_java_17

 

 

在弹出框中点击 Create 按钮,认证后会关闭当前窗口。

Power Automate创建并使用Custom Connector_java_18

 

再次打开编辑该Custom connector,为参数输入值后点击 Test operation 按钮。

Power Automate创建并使用Custom Connector_java_19

 

 

 显示测试成功。

Power Automate创建并使用Custom Connector_java_20

 

 如果需要别人协作,可以通过查看其属性,在 Share 页面添加其他用户。

Power Automate创建并使用Custom Connector_java_21

  

然后我们来使用这个connnector,现在flow或者canva app中已经可以添加这个custom connector了。

Power Automate创建并使用Custom Connector_java_22

 

 可以看到界面如下,只有一个action:

Power Automate创建并使用Custom Connector_java_23

 

 会让我登录,登录后填入参数的值。

Power Automate创建并使用Custom Connector_java_24

 

  可以看到后续步骤是可以使用前面custom connector的输出的。

Power Automate创建并使用Custom Connector_java_25

 

值得注意的是这样的话power apps调用是以使用power apps的用户的身份来获取secret的value,容易出现权限不够。

The user, group or application 'appid=a718371b-ddc3-4432-b503-f07786df1c35;oid=ff9671cb-3bdc-4df4-b2e1-ca1e785ca96b;iss=https://sts.windows.net/9870b0d6-32be-4bbc-9cd7-01d0eed5e8a2/' does not have secrets get permission on key vault 'LuoYongKV;location=eastasia'. For help resolving this issue, please see https://go.microsoft.com/fwlink/?linkid=2125287