Power BI Embedded实现外部用户免登录RLS报表嵌入的剩余步骤咨询
问题解答
场景支持性
该场景完全支持,通过Power BI Embedded的AppOwnsData模式结合自定义身份传递,无需将外部用户加入你的Entra租户,即可实现无登录的RLS过滤报表嵌入。
剩余实现步骤
1. 调整RLS规则适配自定义身份
将原依赖Entra用户的RLS过滤逻辑,替换为基于CUSTOMDATA()函数的规则:
- 原规则示例(依赖AAD用户):
[UserEmail] = USERPRINCIPALNAME() - 修改后规则:
[UserEmail] = CUSTOMDATA() - 确保RLS角色的过滤条件能匹配你将传递的外部用户唯一标识(如邮箱、自定义用户ID)
2. 生成嵌入令牌时注入用户上下文
在后端调用Power BI REST API获取嵌入令牌的请求中,必须携带用户身份参数:
- 请求体中添加
identity字段,指定customData为当前外部用户的标识,同时指定对应的RLS角色名称 - 简化的请求体示例:
{ "datasets": [{"id": "<你的数据集ID>"}], "reports": [{"id": "<你的报表ID>"}], "targetWorkspaces": [{"id": "<你的工作区ID>"}], "identity": { "customData": "external.user@example.com", "roles": ["你的RLS角色名称"] } } - 注意:必须使用服务主体身份调用API获取令牌,确保服务主体已拥有工作区的权限(你已完成相关配置)
3. Web应用端处理流程
- 你的自定义Web应用自行完成外部用户的身份校验(如通过自有账号系统、临时验证码等)
- 用户校验通过后,后端生成带有上述用户上下文的嵌入令牌,返回给前端
- 前端使用Power BI Embedded SDK加载报表时,直接传入该令牌,无需引导用户登录Power BI
4. 验证RLS效果
- 用不同外部用户标识生成令牌,测试报表是否仅展示对应过滤后的内容
- 可在报表中添加卡片可视化,显示
CUSTOMDATA()的值,确认身份参数传递正确
内容的提问来源于stack exchange,提问作者Jazza
相关产品推荐
相关产品推荐

