我已经在react.js应用程序中集成了power-bi服务(应用程序拥有数据/服务原理)。此外,我还想在同一应用程序中集成RLS(行级安全)。如power-bi文档中所述,需要添加嵌入令牌的c#代码,以生成和验证行级安全。
c#代码:
public EmbedToken GetEmbedToken(Guid reportId, IList<Guid> datasetIds, [Optional] Guid targetWorkspaceId)
{
PowerBIClient pbiClient = this.GetPowerBIClient();
// Defines the user identity and roles.
var rlsIdentity = new EffectiveIdentity(
username: "France",
roles: new List<string>{ "CountryDynamic" },
datasets: new List<string>{ datasetId.ToString()}
);
// Create a request for getting an embed token for the rls identity defined above
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 }
);
// Generate an embed token
var embedToken = pbiClient.EmbedToken.GenerateToken(tokenRequest);
return embedToken;
}
2条答案
按热度按时间neekobn81#
我使用express.js和react.js实现了这一点
我们需要使用MSAL库获取嵌入令牌(这只能在服务器端完成),并使用自定义API调用将其传递到客户端
通过使用嵌入式令牌、客户端ID和Power-bi嵌入式客户端API,我们可以在客户端生成报告
kninwzqo2#
RLS不会应用于使用服务主体的应用。
Reference: https://learn.microsoft.com/power-bi/enterprise/service-admin-rls#considerations-and-limitations