0

我正在开发一个 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 公开?或者也许是一种将其合并到应用程序中的方法?任何建议将不胜感激。

4

1 回答 1

0

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

查看我们在 Github 上的示例以获取更多信息。

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

var jwt = embedToken.Generate(accessKey);
于 2016-07-13T14:55:48.497 回答