如何在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
相关产品推荐
相关产品推荐

