【问题标题】:PowerBiEmbedded token using Service Principal使用服务主体的 PowerBiEmbedded 令牌
【发布时间】:2022-03-16 05:26:12
【问题描述】:

我有一个使用 Active Directory 用户执行以下操作的 C# 应用程序,我正在尝试将其转换为使用 Active Directory 服务主体。我在 Azure 中使用 Power Embedded Workspace with Premium Capacity

  • 创建数据集
  • 创建报告
  • 刷新数据集

但是,当我尝试使用 服务主体 执行相同的操作时遇到了问题。

我尝试了什么

我有以下设置

01.租户设置 -> 开发者选项:

  • 在 Azure Active Directory 中创建了应用注册
  • 在 Azure Active Directory 中创建了安全组。
  • 已将服务主体(在步骤 1 中创建)添加到安全组(在步骤 2 中创建)
  • 作为 app.powerbi.com 管理员启用了开发者设置 -> 访问 admin api
  • 限制对特定组的访问,并确保我使用的服务主体已添加到此安全组

02.工作区设置:powerbi 工作区 -> 访问控制

  • 将服务主体作为“管理员”添加到工作区

03.应用拥有数据工作流

  • 使用建议的 github 存储库App Owns Data Solution
  • appsettings.json 中插入正确的值
    • 客户 ID,
    • 密钥
    • 租户 ID
    • 工作区 ID
    • 报告编号

我收到了错误

Operation returned an invalid status code 'Unauthorized'
at Microsoft.PowerBI.Api.ReportsOperations.GetReportInGroupWithHttpMessagesAsync(Guid groupId, Guid reportId, Dictionary`2 customHeaders, CancellationToken cancellationToken)
at Microsoft.PowerBI.Api.ReportsOperationsExtensions.GetReportInGroupAsync(IReportsOperations operations, Guid groupId, Guid reportId, CancellationToken cancellationToken)
at Microsoft.PowerBI.Api.ReportsOperationsExtensions.GetReportInGroup(IReportsOperations operations, Guid groupId, Guid reportId)
at AppOwnsData.Services.PbiEmbedService.GetEmbedParams(Guid workspaceId, Guid reportId, Guid additionalDatasetId) in C:\Campuslabs\TeamFoundation\PowerBI-Developer-Samples\.NET Core\Embed for your customers\AppOwnsData\Services\PbiEmbedService.cs:line 46
at AppOwnsData.Controllers.EmbedInfoController.GetEmbedInfo() in C:\Campuslabs\TeamFoundation\PowerBI-Developer-Samples\.NET Core\Embed for your customers\AppOwnsData\Controllers\EmbedInfoController.cs:line 45

我的问题是

  1. 如何解决此问题

  2. 是否允许服务主体凭据在具有高级容量的 Power Embedded Workspace 上刷新/创建/数据集

【问题讨论】:

  • 要刷新数据集,您必须是数据集的所有者。这意味着数据集必须由服务主体创建,或者您必须将所有者更改为服务主体(请参阅Take Over In Group API)。

标签: powerbi-embedded azure-service-principal


【解决方案1】:
  1. 关于故障排除,从您发送的错误堆栈看来,问题在于工作区的权限,请仔细检查您作为管理员添加到工作区的服务主体是否与您在应用程序中使用的相同。
  2. 关于第二个问题,答案是肯定的。服务主体可以在具有高级容量的 Power Embedded Workspace 上刷新/创建/数据集。

【讨论】:

    猜你喜欢
    • 2022-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多