You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在React.js应用中集成Power BI行级安全性(RLS)?

在React.js的Power BI嵌入应用中集成行级安全性(RLS)

已通过App Owns Data/服务主体方式完成React.js应用与Power BI的集成后,要实现行级安全性(RLS),核心是在后端通过C#生成包含RLS身份信息的嵌入令牌,前端使用该令牌嵌入报表即可自动应用权限控制。

核心C#后端代码(生成带RLS的嵌入令牌)

public EmbedToken GetEmbedToken(Guid reportId, IList<Guid> datasetIds, [Optional] Guid targetWorkspaceId)
{
    PowerBIClient pbiClient = this.GetPowerBIClient();

    // 定义RLS用户身份与关联角色
    var rlsIdentity = new EffectiveIdentity(
        username: "France",
        roles: new List<string>{ "CountryDynamic" },
        datasets: new List<string>{ datasetIds.First().ToString()}
    );
   
    // 组装嵌入令牌请求,包含RLS身份信息
    var tokenRequest = new GenerateTokenRequestV2(
        reports: new List<GenerateTokenRequestV2Report>() { new GenerateTokenRequestV2Report(reportId) },
        datasets: datasetIds.Select(datasetId => new GenerateTokenRequestV2Dataset(datasetId.ToString())).ToList(),
        targetWorkspaces: targetWorkspaceId != Guid.Empty ? new List<GenerateTokenRequestV2TargetWorkspace>() { new GenerateTokenRequestV2TargetWorkspace(targetWorkspaceId) } : null,
        identities: new List<EffectiveIdentity> { rlsIdentity }
    );

    // 生成嵌入令牌
    var embedToken = pbiClient.EmbedToken.GenerateToken(tokenRequest);

    return embedToken;
}

代码关键说明

  • EffectiveIdentity:指定RLS的身份标识(示例中为"France")、关联的RLS角色(CountryDynamic,需提前在Power BI数据集内配置对应角色的行级筛选规则),以及该身份作用的数据集范围。
  • GenerateTokenRequestV2:将待嵌入的报表、数据集、目标工作区(可选)与RLS身份信息组装成令牌请求,确保生成的令牌携带权限规则。
  • 生成的嵌入令牌会传递RLS逻辑,前端使用该令牌嵌入报表时,Power BI会自动根据令牌中的身份信息执行行级数据筛选。

前端React侧注意事项

前端无需修改原有嵌入逻辑,仅需将后端返回的带RLS的嵌入令牌替换原有的嵌入令牌,按照常规Power BI嵌入流程初始化报表即可,权限控制会自动生效。

内容的提问来源于stack exchange,提问作者Pavan Karnalkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 21:05:23