Токен PowerBI встраивается в RLS через C # API

#c# #powerbi

#c# #powerbi

Вопрос:

Мы хотим предоставлять нашим клиентам встроенные отчеты PowerBI. Изначально мы рассматриваем возможность использования одного отчета с набором данных, который содержит данные для всех клиентов. Я создал участника службы (только для авторизации в приложении), который имеет доступ к рабочей области, где я опубликовал отчет. Я также создал роль «business_customer» с выражением DAX ([CustomerNumber] = USERNAME()) в этом отчете.

Я пытаюсь получить токен встраивания для отчета с защитой на уровне строк через C # API (Microsoft.PowerBI.Api):

 var tenantId = "<tenantId>";
var datasetId = "<datasetId>";
var reportId = "<reportId>";
var groupId = "<groupId>";
var applicationPassword = "<applicationPassword>";

var context = new AuthenticationContext($"https://login.microsoftonline.com/{tenantId}/");
var clientCredential = new ClientCredential(applicationId, applicationPassword);
var result = context.AcquireTokenAsync("https://analysis.windows.net/powerbi/api",
   clientCredential).Resu<

var authHeader = new TokenCredentials(result.AccessToken, "Bearer");
var client = new PowerBIClient(new Uri("https://api.powerbi.com"), authHeader);
var groups = client.Groups.GetGroups();

var tokenRequest = new GenerateTokenRequest(TokenAccessLevel.View, datasetId,
   new EffectiveIdentity("username", new List<string> { datasetId },
   new List<string> { "business_customer" }));

var embedToken = client.Reports.GenerateTokenInGroupAsync(new Guid(groupId), new Guid(reportId), 
   tokenRequest, cancellationToken: CancellationToken.None).Resu<
  

Это приводит к сбою при вызове GenerateTokenInGroupsAsync:

 "Invalid request: Creating embed token for accessing dataset <datasetId> shouldn't have effective identity"
  

Я пробовал использовать разные имена пользователей и пытался оставить имя пользователя пустым, но все мои попытки не увенчались успехом.

Есть ли способ получить токен встраивания таким образом или я на неправильном пути? Каким был бы «правильный» способ решения этого случая?

Заранее спасибо

Комментарии:

1. Убедитесь, что опубликованный отчет действительно содержит RLS, потому что одна из причин получения этого сообщения заключается в том, что в отчете нет RLS. Также, каков источник данных и набор данных для этого отчета? каково значение IsEffectiveIdentityRequired свойства dataset?

2. @AndreyNikolov Я определил роль с помощью выражения DAX — но это не те критерии RLS, которые вам нужны? Источником данных является база данных MySQL, а IsEffectiveIdentityRequired является false набор данных.