我正在开发一个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公开?或者也许是将其纳入应用程序的方法?任何建议将不胜感激。
答案 0 :(得分:0)
您可以使用包含API的Microsoft.PowerBI.Core
Nuget package生成报告嵌入令牌。这些令牌应该在服务器上生成,而不是在客户端代码中生成,因此您不会公开Azure访问密钥。
请查看我们的sample on Github了解详情。
var embedToken = PowerBIToken.CreateReportEmbedToken(workspaceCollection, workspaceId, reportId);
var jwt = embedToken.Generate(accessKey);