reactjs 如何在React.js应用程序中集成power-bi行级安全?

k4ymrczo  于 2022-12-29  发布在  React
关注(0)|答案(2)|浏览(78)

我已经在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;
}
neekobn8

neekobn81#

我使用express.js和react.js实现了这一点
我们需要使用MSAL库获取嵌入令牌(这只能在服务器端完成),并使用自定义API调用将其传递到客户端
通过使用嵌入式令牌、客户端ID和Power-bi嵌入式客户端API,我们可以在客户端生成报告

kninwzqo

kninwzqo2#

RLS不会应用于使用服务主体的应用。
Reference: https://learn.microsoft.com/power-bi/enterprise/service-admin-rls#considerations-and-limitations

相关问题