Power BI Embedded,仅通过View Access生成嵌入令牌

时间:2019-04-26 05:46:00

标签: powerbi powerbi-embedded

我已使用here给出的服务主体嵌入了power bi报告。

我正在如下生成嵌入令牌,

var generateTokenRequestParameters = new GenerateTokenRequest(accessLevel:"View",allowSaveAs:false,identities: new EffectiveIdentity[] { new EffectiveIdentity(username: serviceAccount, roles: new string[] { "Viewer" }, datasets: new string[] { report.DatasetId }) });
EmbedToken embedToken = client.Reports.GenerateTokenInGroup(groupId, reportId, generateTokenRequestParameters);

但是当我使用javascript sdk嵌入报告时,如果我将权限配置如下,则用户可以编辑报告。如何防止用户编辑嵌入令牌中的报告?

permissions: models.Permissions.ReadWrite,
viewMode: models.ViewMode.Edit,

1 个答案:

答案 0 :(得分:0)

我有一个嵌入PowerBI报告的C#MVC Web应用程序。

这是我们的嵌入配置

var config = {
        type: 'report',
        id: embedReportId,
        accessToken: accessToken,
        tokenType: models.TokenType.Embed,
        embedUrl: embedUrl,
        permissions: models.Permissions.View,
        settings: {
            filterPaneEnabled: false,
            navContentPaneEnabled: true,
            background: models.BackgroundType.Transparent,
            layoutType: models.LayoutType.Custom,
            customLayout: {
                displayOption: models.DisplayOption.FitToWidth
            }
        }
    };

您在问题中提到了viewMode属性。如您所见,我们甚至没有在配置中设置viewMode属性。我们只设置了权限属性,但据我所知,它并没有做什么用。此属性很少使用,或仅控制您可以在UI上看到的次要内容。

如果您像生成“视图”那样生成访问令牌,并且有人编辑嵌入的报表查看器页面以将权限属性从models.Permissions.View更改为models.Permissions.ReadWrite,则HTML / javascript中的任何后续调用在该报告查看器页面编辑之后,PowerBI JavaScript库尝试进行的操作将失败,因为生成的访问令牌是针对View而不是Edit的,并且对Microsoft / PowerBI的API调用也会失败。

因此,您实际上仅需要确保无论查看上下文如何,后端逻辑都会生成正确的访问令牌。如果您要生成具有完全权限的访问令牌,并使用PowerBI javascript库隐藏内容,则用户可能会更改您的页面源代码,并且做得比您想做的还要多。

祝你好运