【发布时间】:2020-09-21 04:34:03
【问题描述】:
设置:
我正在尝试使用控制台应用程序访问基于 Azure PowerBI 的 API,因为我的公司希望通过 Suspend/Resume PBI 容量来优化成本。
已根据官方文档 API Emulator Window 成功访问这些 api,它的工作非常完美,因为它只是通过身份验证窗口询问我的 Outlook 帐户的用户名和密码,并隐式成功生成身份验证令牌。
当我尝试从我的控制台应用程序中实现调用 api 时,将自动调度触发,有一些方法可以以编程方式生成身份验证令牌。以下是我在访问 PBI API 之前用来生成相同内容的方法。
方法#1:Generating token by using Azure Active Directory Authentication Libraries.。
此方法要求通过 Nuget 添加 AAD 身份验证库,在添加时会失败,因为 AcquireTokenAsync 方法不接受任何参数,但教程指定了 4 个参数要输入此方法(缺少函数重载?)。所以我无法使用这种方法生成令牌。肯定是库版本问题,但official MS documentation 没有解释以上可用版本的任何内容。
方法 #2: Authorize Active Directory without dialog box StackOverflow 问题标记为答案
这种方法在调用 HTTPResponseMessage 时,它会被挂断,而不会进入下一行或 catch 语句。
方法 #3: 尝试使用 POSTMAN 模拟令牌生成,并在我的控制台应用程序上使用生成的令牌来检查可访问性。
这种方法可以成功生成令牌,但是在控制台应用程序中使用生成的令牌时,它会显示未经授权的令牌。
怀疑部分: 已经使用 AppRegisteration 在 Azure 中生成了 ClientID、ClientSecretID 和 TenantID,但不知道这如何与 Azure 中的 PowerBI 服务相关联。 Azure Active Directory 是否存在于 PBIService 和 AppRegisteration 之间?基于生成的 AppRegisteration 详细信息已尝试访问此身份验证 api (https://login.microsoftonline.com/tenantId/oauth2/token) 以生成令牌。这成功地生成了一个令牌,但由于对 PBI api 的未经授权的访问而不幸失败。
我错过了什么吗?将有助于解决通过控制台应用程序访问基于 PBI 的 API 的概念有什么问题。普通的 PBI 社区网站没有多大帮助。
【问题讨论】:
-
明确地说,您只想访问默认的 PowerBi Rest api docs.microsoft.com/en-us/rest/api/power-bi 而不是嵌入的?
-
只想访问基于 powerbi 嵌入式的 REST API docs.microsoft.com/en-us/rest/api/power-bi-embedded/capacities/…。在问题的第一个超链接中完全提到了相同的内容。
标签: azure api azure-active-directory powerbi