来自Azure功能C#的Power BI API登录凭据帮助承载令牌



我正在尝试编写一个azure函数,该函数将从powerbi工作区调用我的分页报告。我遇到的问题是,凭据需要是Power Bi接受的承载令牌。我该如何获得这个无记名代币?无论是来自电源bi还是第三方,只要它允许我连接到电源bi并获取我的报告

[FunctionName("Function1")]
public async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
var credentials = new BasicAuthenticationCredentials();
credentials.UserName = "myemail@org.com";
credentials.Password = "password!";
var PowerBIClient = new PowerBIClient(credentials);
Guid groupId = new Guid("6xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx5");
Guid reportId = new Guid("dxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx3");
int pollingTimeOutInMinutes = 10;
var file = await ExportPaginatedReport(reportId, groupId, pollingTimeOutInMinutes, PowerBIClient);

return new OkObjectResult(file);

我能够通过使用azure企业应用程序获得承载令牌。然后,我将该应用程序添加到AzureAd中的一个安全组中,并将该安全组添加到powerbi中的管理门户中,该门户允许服务主体访问您的工作区。(tenant_secrets实际上只是租户ID,只需要另一个名称。(

public static string GetAccessTokenWithLocalCredential(string client_id, string client_secret, string tenant_id)
{
string appId = client_id;
string client_secrets = client_secret;
string tenant_secrets = tenant_id;
string tenantSpeceficAuthority = "https://login.microsoftonline.com/" + tenant_secrets;
var appConfidential = ConfidentialClientApplicationBuilder.Create(appId)
.WithClientSecret(client_secret)
.WithAuthority(tenantSpeceficAuthority)
.Build();
string[] scopes = { "https://analysis.windows.net/powerbi/api/.default" };
var authResult = appConfidential.AcquireTokenForClient(scopes).ExecuteAsync().Result;
return authResult.AccessToken;
}

相关内容

最新更新