我有一个控制台应用程序,该应用程序使用REST API来获取数据集(然后向其中添加行)。当我提供自己的用户/密码凭证时,此方法有效。
该应用已获得以下委托权限:
Read and write all Datasets
View all Datasets
现在,我已将应用程序注册为Web / API应用程序,以便改用应用程序密钥/秘密。我可以获得令牌,但是当我进行相同的REST调用时,我得到401 Unauthorized,仍然使用相同的权限。
因此,我尝试在Power BI Service中为应用程序授予以下应用程序权限,因为文档说这些适用于守护程序:
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",
我还研究了为应用程序/服务主体分配“贡献者”角色,但是我不确定在哪个级别(“订阅/资源组/资源”)。
我想念什么..?
答案 0 :(得分:0)
我认为Power BI REST API不能使用此方法。
因此,我创建了一个特殊用户(“ Power BI主帐户”)。
答案 1 :(得分:0)
首先,我认为在最初提出问题时无法使用服务主体,因为几个月前我没有发现任何有用的信息来实现它。但是之后,我碰到了this文章,该文章简要说明了如何使其工作,因此我能够将“服务帐户”的用法更改为服务主体方法。
因此,仅向Azure AD App授予权限是不够的。您还必须添加安全组,将应用添加到该安全组,在Power BI Admin Portal中启用服务主体的使用,然后将安全组添加到工作区。之后,它应该可以工作。