首页 > 解决方案 > Azure 函数中的 Microsoft.Identity.Web

问题描述

我需要从我的 Azure 函数内部调用下游 API,即 PowerBI 服务。我在 Web 应用程序中有一个工作示例,但我无法在我的 Azure 函数中实现它。

在 Web 应用示例中,配置通过 Microsoft.Identity.Web 进行,如下所示。

services.AddMicrosoftIdentityWebAppAuthentication(Configuration)
                    .EnableTokenAcquisitionToCallDownstreamApi()
                    .AddInMemoryTokenCaches();

然后在控制器内部,我能够接收到构造函数中注入的 ITokenAcquisition 对象

public HomeController(ITokenAcquisition tokenAcquisition, ...
{
    this._tokenAcquisition = tokenAcquisition;

我可以这样做:

var accessToken = 
    this._tokenAcquisition.GetAccessTokenForAppAsync(powerbiApiDefaultScope).Result;

并获得这样的令牌凭证:

var tokenCredentials = new TokenCredentials(accessToken, "Bearer");

使用这个 tokenCredentials 我可以实现我的目标,即实例化一个 PowerBIClient 类以与 PowerBI 服务进行交互。

var client = new PowerBIClient(new Uri(urlPowerBiServiceApiRoot), tokenCredentials);

问题是我无法在隔离的 Azure Function 的 Startup 类中设置配置。因此,我无法在我的 Azure 函数中注入 ITokenAcquisition 以获取访问令牌。

有人可以请教吗?太感谢了。

标签: azureazure-functionsaccess-tokenmicrosoft-identity-web

解决方案


推荐阅读