Power BI REST API-使用应用程序密钥/服务主体时出现401授权错误

时间:2018-12-20 10:08:29

标签: azure powerbi

我有一个控制台应用程序,该应用程序使用REST API来获取数据集(然后向其中添加行)。当我提供自己的用户/密码凭证时,此方法有效。

该应用已获得以下委托权限:

Read and write all Datasets

View all Datasets

现在,我已将应用程序注册为Web / API应用程序,以便改用应用程序密钥/秘密。我可以获得令牌,但是当我进行相同的REST调用时,我得到401 Unauthorized,仍然使用相同的权限。

因此,我尝试在Power BI Service中为应用程序授予以下应用程序权限,因为文档说这些适用于守护程序:

https://docs.microsoft.com/en-us/azure/active-directory/develop/v1-permissions-and-consent#types-of-permissions

Read and write all content in tenant 

View all content in tenant

这些权限已由Azure管理员授予。

作为调试的一部分,我已经解码了两个令牌。

用于应用程序密钥验证的令牌包含以下内容:

"roles": [
"Tenant.ReadWrite.All",
"Tenant.Read.All"
],

基于用户的身份验证令牌包含以下内容:

"scp": "Dataset.ReadWrite.All Workspace.ReadWrite.All",

我还研究了为应用程序/服务主体分配“贡献者”角色,但是我不确定在哪个级别(“订阅/资源组/资源”)。

我想念什么..?

2 个答案:

答案 0 :(得分:0)

我认为Power BI REST API不能使用此方法。

因此,我创建了一个特殊用户(“ Power BI主帐户”)。

答案 1 :(得分:0)

首先,我认为在最初提出问题时无法使用服务主体,因为几个月前我没有发现任何有用的信息来实现它。但是之后,我碰到了this文章,该文章简要说明了如何使其工作,因此我能够将“服务帐户”的用法更改为服务主体方法。

因此,仅向Azure AD App授予权限是不够的。您还必须添加安全组,将应用添加到该安全组,在Power BI Admin Portal中启用服务主体的使用,然后将安全组添加到工作区。之后,它应该可以工作。