嵌入式Power BI:行级别安全批量添加多用户并分配不同角色
批量为Power BI App Owns Data添加多用户并分配不同角色的实现方法
当然可以实现批量添加多用户并分配不同角色啦!其实你已经用到了GenerateTokenRequest的identities参数,它本身就支持传入一个多个EffectiveIdentity实例的列表,刚好能满足你的批量需求。下面给你具体的实现思路和代码示例:
步骤1:整理用户-角色映射关系
首先把需要配置的用户、对应的角色以及关联的数据集ID整理成一个可迭代的集合,你可以根据实际需求从数据库、配置文件或者其他数据源读取这些数据,这里用硬编码示例演示:
// 定义用户与角色的映射集合,可按需扩展 var userRoleMappings = new List<(string Username, List<string> Roles, string DatasetId)> { ("user1@yourdomain.com", new List<string> { "Role A" }, report.DatasetId), ("user2@yourdomain.com", new List<string> { "Role B" }, report.DatasetId), ("user3@yourdomain.com", new List<string> { "Role A", "Role C" }, report.DatasetId) };
步骤2:批量生成EffectiveIdentity实例
循环上面的映射集合,为每个用户创建对应的EffectiveIdentity对象,并加入列表:
var identities = new List<EffectiveIdentity>(); foreach (var mapping in userRoleMappings) { identities.Add(new EffectiveIdentity( username: mapping.Username, roles: mapping.Roles, datasets: new List<string> { mapping.DatasetId } )); }
步骤3:传入GenerateTokenRequest生成请求参数
把批量生成的identities列表传入GenerateTokenRequest即可:
var generateTokenRequestParameters = new GenerateTokenRequest( accessLevel: "View", identities: identities );
额外注意事项
- 每个用户可以分配多个角色(比如示例中的user3),但要确保这些角色已经在对应的数据集里提前创建好,且名称完全匹配(大小写敏感)
- 用户名需要符合Power BI的格式要求,通常是用户的用户主体名称(UPN),比如
xxx@yourdomain.com - 如果你的业务场景是为不同用户单独生成令牌(而非一次性应用多个身份),可以循环为每个用户单独创建
GenerateTokenRequest并生成令牌,这样每个令牌只对应一个用户的权限
内容的提问来源于stack exchange,提问作者Omkar
相关产品推荐
相关产品推荐

