如何使Azure Logic应用使用其托管服务身份通过连接器进行身份验证?

时间:2019-01-11 17:26:51

标签: azure-active-directory azure-logic-apps azure-ad-graph-api

我的Azure Logic应用程序作为托管服务身份运行,并且我试图使用Azure AD连接器作为该应用程序的触发器。连接器需要对Azure AD Graph API的权限,并且通过使用PowerShell的ClientCredentials作为ServicePrincipal MSI进行身份验证并调用所需的Azure AD Graph API,我已经验证了权限是否正确。

但是,我似乎无法告诉我的逻辑应用程序的Azure AD连接器(与REST调用相反,我只能在其中设置身份验证属性)以使用托管服务身份。

由于没有针对Microsoft提供的任何Logic Apps连接器的文档,因此我无法确定Azure AD连接器上是否存在可以用来告诉其如何进行身份验证的众所周知的属性。我的ARM模板中包含以下内容,并且会猜测要设置一个customParameterValue,但我不知道它是什么。

{
    "type": "Microsoft.Web/connections",
    "name": "[parameters('connections_azuread_name')]",
    "apiVersion": "2016-06-01",
    "location": "eastus",
    "scale": null,
    "properties": {
        "displayName": "Azure AD",
        "customParameterValues": {},
        "api": {
            "id": "[concat('/subscriptions####/providers/Microsoft.Web/locations/eastus/managedApis/', parameters('connections_azuread_name'))]"
        }
    },
    "dependsOn": []
}

1 个答案:

答案 0 :(得分:0)

我知道我参加聚会有点晚了,但是我已经很晚才使用托管身份(MI),并且基本上得出的结论是它们还没有准备好被主流使用。它们是一个很好的概念,我希望它们能继续增长,但存在局限性(例如大多数连接器尚未支持它们),以及每个订阅只能拥有10个具有身份标识的逻辑应用程序的局限性,会严重限制其使用。

从本质上讲,我采用了带有MI的单个逻辑应用程序,该MI基于一些传递的值为服务构建适当的身份验证块,并从Key Vault中获取机密。每隔一个逻辑应用程序都会调用该“身份验证”逻辑应用程序,以获取它们应传递给API,Azure函数等的调用的详细信息。

我还需要AAD保护我所有的Azure功能,因此对于允许调用已认证功能的LA来说,MI再次是很棒的,但是Azure Function操作仍然不支持MI(或任何身份验证) )。因此,我不得不求助于使用HTTP连接器(带有身份验证)来调用FA。

Logic Apps真是太棒了,令人沮丧的是它们还不存在!

不过,为了回答您的问题,我发现某些连接器将接受诸如...

的身份验证块。
{
  "audience": "XXXXXXXXXXXX",
  "type": "ManagedServiceIdentity"
}