azure PowerBI权限

lf5gs5x2  于 2022-11-17  发布在  其他
关注(0)|答案(1)|浏览(200)

我正在尝试访问API以从PowerBI下载使用统计数据并与其他报告集成。

import requests
import json

base_url = "https://api.powerbi.com/v1.0/myorg/admin/"
url = "https://login.microsoftonline.com/my_tenant_id_goes_here/oauth2/token"
scope = "https://analysis.windows.net/powerbi/api/.default"
grant_type = "client_credentials"
client_id = "my_client_id"
client_secret = "my_client_secret"
resource = "https://analysis.windows.net/powerbi/api"

header = {
    "scope": scope,
    "grant_type": grant_type,
    "client_id": client_id,
    "client_secret": client_secret,
    "resource": resource
}

r = requests.post(url, data = header)
login_result = r.json()
print(login_result)

token_type = login_result.get("token_type")
access_token = login_result.get("access_token")

authorization_key = token_type + " " + access_token
print('Authentication Key Generated')
headers = {'Content-Type':'application/json','Authorization': authorization_key}
print('Consuming Dashboards Rest End Point')
data = requests.get(base_url + 'dashboards', headers=headers)
print(data)
json_data = data.content
print(json_data)

打印后得到以下结果(login_result)

{'token_type': 'Bearer', 'expires_in': '3599', 'ext_expires_in': '3599', 'expires_on': '1667296164', 'not_before': '1667292264', 'resource': 'https://analysis.windows.net/powerbi/api', 'access_token': 'longlongalphanumericstring'}

它似乎已经正确地找到了访问令牌。但是当我打印数据时,我得到了一个<401>错误,json_data读取

b'{"error":{"code":"PowerBINotAuthorizedException","pbi.error":{"code":"PowerBINotAuthorizedException","parameters":{},"details":[],"exceptionCulprit":1}}}'

我已在Azure中签入权限。我拥有 Jmeter 板。读取。所有权限。
当我从
基本网址=“https://api.powerbi.com/v1.0/myorg/admin/“
我得到

'{"Message":"API is not accessible for application"}'

在我看来,这像是一个权限错误,但我似乎无法导航到Azure界面来修复它。

62o28rlo

62o28rlo1#

我试图通过Postman在我的环境中重现相同的错误,但得到了如下相同的错误:

要解决此错误,请尝试以下方法:

我创建了Azure AD应用程序并授予了权限:

我创建了一个Azure安全组并将服务主体添加为成员,如下所示:

PowerBi管理门户中,启用**Allow service principals to use read-only admin APIs**添加上面创建的安全组:

它需要大约**15 mins来反映设置。现在我通过客户端凭据流生成令牌,如下所示:
我使用了
v2.0**令牌终结点:

https://login.microsoftonline.com/TenantID/oauth2/v2.0/token

client_id:clientID
client_secret:ClientSecret
grant_type:client_credentials
scope:https://analysis.windows.net/powerbi/api/.default


指令集

我能够成功访问PowerBi,如下所示:

https://api.powerbi.com/v1.0/myorg/admin/groups/ID

如果问题仍然存在,请尝试使用授权代码流,因为**Tenant.ReadWrite.All**是应用程序权限。

相关问题