我正在尝试开发一个利用Power BI API的应用程序。
问题是,即使我具有有效的身份验证令牌,到目前为止,我尝试访问的每个API端点都返回403(禁止访问)Http状态,响应主体上没有内容。
我认为我获得的令牌是有效的,因为第二天当我尝试使用相同的令牌时,它会给我一个“令牌过期消息”。
我使用的不是公司管理员的Azure Azure Active Directory帐户。但是我可以完全访问Power BI工作区和web interface上的报告。
我目前正在使用Azure AD Oatuh2 v1进行身份验证,但是我也尝试了v2,但没有成功(我仍在使用v1,因为在v2上我不确定我的范围和资源参数是否正确)。
以下是我发送的请求:
GET
https://login.microsoftonline.com/{tenant}/oauth2/authorize?
client_id=<my client id>
&response_type=code
&redirect_uri=http%3A%2F%2Flocalhost%3A8080/azureLogin/authorize
&response_mode=query
在localhost:8080/azureLogin/authorize
上的重定向中获取授权代码,然后
POST https://login.microsoftonline.com/{tenant}/oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code
&client_id=<my client id>
&code=<the code I just got>
&redirect_uri=http%3A%2F%2Flocalhost%3A8080/azureLogin/authorize
&client_secret=<my client secret>
作为“租户”,我同时尝试了“ common”和我的组织ID。
但是当我尝试使用https://api.powerbi.com/v1.0/myorg/reports
标头访问Authorization: Bearer <token>
时。我收到403禁止响应。
在Azure AD上,我可以看到我的用户已授予我注册的该应用程序的所有权限。
我想念什么吗?我该怎么解决?
答案 0 :(得分:1)
为使答案对其他人可见,我在注释中总结了答案:
您错过了resource参数,您正在访问powerbi,因此应该是
resource: https://analysis.windows.net/powerbi/api
资源是目标Web API(安全资源)的应用ID URI。它也可能是外部资源,例如https://graph.microsoft.com,https://analysis.windows.net/powerbi/api等。在授权或令牌请求之一中,这是必需的。