我需要从我的 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 以获取访问令牌。
有人可以请教吗?太感谢了。