我是微软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 Connectors 、Create a custom connector from scratch 、Create 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。
我这里取个有意义的名字,如下,点击 Continue 按钮。
我这里上传了一个图片作为connector的icon,写了描述,当然用的是https,Host我这里填写的是 luoyongkv.vault.azure.net,然后点击最下面的 Security -> 继续下一步。
认证类型(Authentication type)我选择 OAuth 2.0。
然后其他各项目填写如下,Identity Provider我选择Azure Active Directory,Login url可以保持默认的不变,其余的如实填写然后点击右上角的 Create connector。
保存成功后会生成 Redirect URL,复制下来。
在新页面中登录 https://portal.azure.com ,打开前面创建的 app,点击左侧的 Authentication ,在右边的Redirect URIs中增加前面步骤复制的 Redirect URL的值。
继续Custom connector中的Definition步骤。点击 New action 按钮。
设置如下,然后点击 Request 中的 Import from sample。
设置如下,用到的url是:https://luoyongkv.vault.azure.net/secrets/{secretName}?api-version={apiVersion} ,{}中的值会被识别为参数。
可以看到生成了两个参数,我这里点击api-version参数的 Edit 菜单。
为它设置为必须输入后点击右上角的 Update connector 按钮,再点击 <- Back 链接回到前面步骤。
点击 Response 下面的 Add default response 链接。
我这里粘贴的json如下,设置如下图,点击 Import 按钮,再点击右下角的 Test -> 链接。
{ "value": "LuoYong'sSecret", "id": "https://luoyongkv.vault.azure.net/secrets/Secret/51ecd8873ffa42a188a5c9510ca78197", "attributes": { "enabled": true, "created": 1589625878, "updated": 1589625878, "recoveryLevel": "Recoverable+Purgeable" } }
进入完成创建Custom connector的最后一个步骤,点击 +New connection 链接。参数值目前可以不设置。
在弹出框中点击 Create 按钮,认证后会关闭当前窗口。
再次打开编辑该Custom connector,为参数输入值后点击 Test operation 按钮。
显示测试成功。
如果需要别人协作,可以通过查看其属性,在 Share 页面添加其他用户。
然后我们来使用这个connnector,现在flow或者canva app中已经可以添加这个custom connector了。
可以看到界面如下,只有一个action:
会让我登录,登录后填入参数的值。
可以看到后续步骤是可以使用前面custom connector的输出的。
值得注意的是这样的话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