cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Sanjana
Frequent Visitor

unable to generate token using the datasetid for reports using effective identity

using (var client = new PowerBIClient(new Uri(API_URL), new TokenCredentials(accessToken, "Bearer")))
{
Report powerBiReport = await client.Reports.GetReportInGroupAsync(groupId, reportId.ToString());
#region default
var generateTokenRequestParameters = new GenerateTokenRequest("view", null, identities: new List<EffectiveIdentity> { new EffectiveIdentity(username: username, roles: roles, datasets: new List<string> { powerBiReport.DatasetId }) });
var token = await client.Reports.GenerateTokenInGroupAsync(groupId, reportId, generateTokenRequestParameters);

}

 

it works fine without effectiveidentity ut it fails with effective identity. Please help in identifying the parameters

1 ACCEPTED SOLUTION
Jayendran
Solution Sage
Solution Sage

Hi @Sanjana ,

 

What do you mean by fails , do you get any error ? pls share that.

 

  • Make sure that username ,roles are not having null values
  • Make sure your reports developed using the RLS
                    if (datasets.IsEffectiveIdentityRolesRequired == true)
                    {
                        if (!string.IsNullOrWhiteSpace(username))
                        {
                            var rls = new EffectiveIdentity { Username = username, Roles = new List<string> { roles }, Datasets = new List<string> { report.DatasetId } };

                            if (!string.IsNullOrWhiteSpace(roles))
                            {
                                var rolesList = new List<string>();
                                rolesList.AddRange(roles.Split(','));
                                rls.Roles = rolesList;
                            }
                            // Generate Embed Token with effective identities.
                            generateTokenRequestParameters = new GenerateTokenRequest(accessLevel: "view", identities: new List<EffectiveIdentity> { rls });
                        }
                       
                    }

Try the above code which having more condition for you to check

View solution in original post

1 REPLY 1
Jayendran
Solution Sage
Solution Sage

Hi @Sanjana ,

 

What do you mean by fails , do you get any error ? pls share that.

 

  • Make sure that username ,roles are not having null values
  • Make sure your reports developed using the RLS
                    if (datasets.IsEffectiveIdentityRolesRequired == true)
                    {
                        if (!string.IsNullOrWhiteSpace(username))
                        {
                            var rls = new EffectiveIdentity { Username = username, Roles = new List<string> { roles }, Datasets = new List<string> { report.DatasetId } };

                            if (!string.IsNullOrWhiteSpace(roles))
                            {
                                var rolesList = new List<string>();
                                rolesList.AddRange(roles.Split(','));
                                rls.Roles = rolesList;
                            }
                            // Generate Embed Token with effective identities.
                            generateTokenRequestParameters = new GenerateTokenRequest(accessLevel: "view", identities: new List<EffectiveIdentity> { rls });
                        }
                       
                    }

Try the above code which having more condition for you to check

Helpful resources

Announcements
PBI Sept Update Carousel

Power BI September 2023 Update

Take a look at the September 2023 Power BI update to learn more.

Learn Live

Learn Live: Event Series

Join Microsoft Reactor and learn from developers.

Dashboard in a day with date

Exclusive opportunity for Women!

Join us for a free, hands-on Microsoft workshop led by women trainers for women where you will learn how to build a Dashboard in a Day!

MPPC 2023 PBI Carousel

Power Platform Conference-Power BI and Fabric Sessions

Join us Oct 1 - 6 in Las Vegas for the Microsoft Power Platform Conference.