如何将Power BI报告集成到UWP C#应用程序中

时间:2016-07-01 09:01:14

标签: c# uwp jwt powerbi-embedded

我正在开发一个UWP应用程序来显示我为用户创建的报告。但是,一旦我将报告嵌入到URL中,我似乎无法生成必要的安全令牌来验证报告。

我已尝试将报表嵌入到webview中的iFrame中,以与Web应用程序类似的方式显示该报表,但是,与webview相比,iFrame不会加载公开报表。

任何示例似乎都使用JwtSecurityToken,但目前它与UWP应用程序不兼容。

using System.IdentityModel.Tokens;

public string Generate(string accessKey = null)
{
    if (string.IsNullOrWhiteSpace(this.AccessKey) && accessKey == null)
    {
        throw new ArgumentNullException(nameof(accessKey));
    }

    accessKey = accessKey ?? this.AccessKey;

    var key = Encoding.UTF8.GetBytes(accessKey);
    var signingCredentials = new SigningCredentials(new InMemorySymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature, SecurityAlgorithms.Sha256Digest);
    var token = new JwtSecurityToken(this.Issuer, this.Audience, this.Claims, DateTime.UtcNow, this.Expiration, signingCredentials);

    return new JwtSecurityTokenHandler().WriteToken(token);
}

是否有办法绕过此软件包而不将报告嵌入URL公开?或者也许是将其纳入应用程序的方法?任何建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以使用包含API的Microsoft.PowerBI.Core Nuget package生成报告嵌入令牌。这些令牌应该在服务器上生成,而不是在客户端代码中生成,因此您不会公开Azure访问密钥。

请查看我们的sample on Github了解详情。

var embedToken = PowerBIToken.CreateReportEmbedToken(workspaceCollection, workspaceId, reportId);

var jwt = embedToken.Generate(accessKey);