使用托管标识从逻辑应用调用受保护的 Azure AD API
Calling an Azure AD Protected API from Logic App using Managed Identity
我们有一个托管在 prem 上的 Azure AD Protect API。我们需要从 Logic App 调用此 API。我们目前已经在 App Registration 中为此逻辑 App 创建或注册了一个新的客户端 App,并提供了必要的权限,并调用了 API 传递 Bearer Token。
我的问题是,有没有一种方法可以利用逻辑应用程序的托管身份(用户分配或系统分配)来调用 API?
是的。
我写了一篇关于这个主题的文章(虽然它不是特定于逻辑应用程序):https://joonasw.net/view/calling-your-apis-with-aad-msi-using-app-permissions.
您需要创建一个 appRoleAssignment,为您的托管身份服务主体授予应用程序权限。
为此,我们必须使用 PowerShell 或 Microsoft Graph API。
使用 Azure AD PowerShell,我们可以这样做:
Connect-AzureAD
New-AzureADServiceAppRoleAssignment -ObjectId $miSpId -Id $appRoleId -PrincipalId $miSpId -ResourceId $targetApiSpId
您需要找到 3 个参数:
- miSpId:Managed Identity 的 objectId(很简单,我们可以从 Logic App 中的 Identity blade 中找到)
- appRoleId:在您的 API 的清单中定义的 appRole 的 ID(这应该也很容易找到,它在您的 API 的清单中)
- 如果您尚未在 API 上定义 appRole(应用权限),则需要先定义 (https://joonasw.net/view/defining-permissions-and-roles-in-aad)
- targetApiSpId:目标 API 服务主体的 objectId(这个你可以通过转到企业应用程序并在那里找到你的 API 来获得)
我们有一个托管在 prem 上的 Azure AD Protect API。我们需要从 Logic App 调用此 API。我们目前已经在 App Registration 中为此逻辑 App 创建或注册了一个新的客户端 App,并提供了必要的权限,并调用了 API 传递 Bearer Token。
我的问题是,有没有一种方法可以利用逻辑应用程序的托管身份(用户分配或系统分配)来调用 API?
是的。 我写了一篇关于这个主题的文章(虽然它不是特定于逻辑应用程序):https://joonasw.net/view/calling-your-apis-with-aad-msi-using-app-permissions.
您需要创建一个 appRoleAssignment,为您的托管身份服务主体授予应用程序权限。 为此,我们必须使用 PowerShell 或 Microsoft Graph API。 使用 Azure AD PowerShell,我们可以这样做:
Connect-AzureAD
New-AzureADServiceAppRoleAssignment -ObjectId $miSpId -Id $appRoleId -PrincipalId $miSpId -ResourceId $targetApiSpId
您需要找到 3 个参数:
- miSpId:Managed Identity 的 objectId(很简单,我们可以从 Logic App 中的 Identity blade 中找到)
- appRoleId:在您的 API 的清单中定义的 appRole 的 ID(这应该也很容易找到,它在您的 API 的清单中)
- 如果您尚未在 API 上定义 appRole(应用权限),则需要先定义 (https://joonasw.net/view/defining-permissions-and-roles-in-aad)
- targetApiSpId:目标 API 服务主体的 objectId(这个你可以通过转到企业应用程序并在那里找到你的 API 来获得)