有效ID的PowerBI Embed Service主体嵌入令牌生成错误

问题描述

我已经设置了专用的PowerBI功能,将服务主体作为管理员添加到工作区中,现在正尝试嵌入一个与Azure Analysis Services直接连接的报表,并作为服务主体进行身份验证。

当我尝试发布嵌入令牌时,收到一条错误消息“创建用于访问数据集的嵌入令牌[我的数据集ID]要求有效身份用户名与调用者的主体名称相同”

我正在使用Nuget的PowerBI .NET Core软件包Microsoft.PowerBI.Api,版本3.14.0尝试发布代码,这是代码:

GenerateTokenRequest generateTokenRequestParameters;
//var rls = new EffectiveIdentity(AppObjectId,new List<string> { report.DatasetId });
var rls = new EffectiveIdentity(ApplicationId,new List<string> { report.DatasetId });
rls.Roles = new string[] { "AllData" };
generateTokenRequestParameters = new GenerateTokenRequest(accessLevel: "view",identities: new List<EffectiveIdentity> { rls });
var tokenResponse = await client.Reports.GenerateTokenInGroupAsync(workspaceId,report.Id,generateTokenRequestParameters);

我尝试过的事情:

  • 发送与服务主体凭据(应用程序ID)完全相同的有效ID字符串
  • 发送应用注册对象ID作为有效ID字符串

有什么办法可以帮助我解决此问题吗?

解决方法

这个非常简短的答案具有关键点:https://stackoverflow.com/a/59026502/139200(链接的文章回答这个问题)

重要的一点是,您应该在AAD中获取ServicePrincipal对象的ID值,而不是应用程序注册的对象ID。

要获取ServicePrincipal ID,请使用Az PowerShell模块并运行Get-AzADServicePrincipal -ApplicationId your-application-id

输出将包含一个名为“ Id”的字段,这是您需要作为有效身份传递的字段: Screenshot of a Get-AzAdServicePrincipal command

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...