azure - 如何获取 token 以从具有托管身份的 Function App 访问 APIM

标签 azure azure-api-management azure-managed-identity

我正在尝试从 Azure Function 访问 APIM,并希望 APIM 通过托管身份 token 进行身份验证。我已将系统分配的标识分配给函数应用程序。我正在关注此(示例)[https://learn.microsoft.com/en-us/azure/app-service/overview-management-identity?tabs=dotnet#asal ] 生成 token 。在下面的行中,如果我将“https://vault.azure.net”提供给 GetAccessTokenAsync 方法,我将获得 token 。但我希望观众是 APIM,所以我提供了 https://azure-api.net就像最后一行提到的那样。但我遇到了异常(exception)。如何提供 APIM Url 来获取访问 token ?

using Microsoft.Azure.Services.AppAuthentication;
var azureServiceTokenProvider = new AzureServiceTokenProvider();
string accessToken = await azureServiceTokenProvider.GetAccessTokenAsync("https://vault.azure.net");
<小时/>
string accessToken = await azureServiceTokenProvider.GetAccessTokenAsync("https://azure-api.net");

更新。我认为列出资源有问题。因为当我提供正确的资源名称时,它表示租户中不存在资源,但当我运行 az cli 时,我可以看到订阅位于同一租户下。

最佳答案

正如我在评论中提到的,您需要Register an application in Azure AD to represent the API ,然后您可以获得它的 token (即使用上一个链接中的Application ID URI)。

string accessToken = await azureServiceTokenProvider.GetAccessTokenAsync("<Application ID URI>");
<小时/>

你需要知道的事情:

您可以使用 azureServiceTokenProvider 获取 https://vault.azure.nethttps://managment.azure.com 的 token code>,因为都是微软公开的API,即azure keyvault rest apiazure management rest api ,本质上都是微软注册的AD App,所以如果你想获取自己API的token,需要先注册AD App来代表API。

此外,当您使用托管身份来获取 token 时,本质上是 it uses the client credential flow要获取 token ,实际上托管身份是由azure管理的服务主体(即企业应用程序)。请记住利用 app role如果您需要在获取访问 token 时验证 roles 声明。

关于azure - 如何获取 token 以从具有托管身份的 Function App 访问 APIM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67398519/

相关文章:

python - 如何在Python中获取SQL Server的SYSTEM_USER

azure - 部署到云时,未将对象引用设置为对象实例错误

c# - 收到推送通知时隐藏 Toast 通知

rest - 使用 Azure API 管理 REST API 时的 AuthenticationFailedInvalidHeader

Azure API 管理(策略)

azure - 如何查看API应用程序的QA环境在App Insights中执行的SQL命令?

azure - 在 Application Insights 中查看请求正文

azure - 允许我从 key 保管库读取证书的最小 Azure 角色 (RBAC) 是什么?

azure - 使用托管标识将 Azure SQL 数据库链接到数据工厂

azure - 为了在我的 Azure SQL Server 中配置外部用户,我的部署服务主体需要哪些角色/权限/组